Pergunta

Eu tenho um monte de páginas web ASP.NET (que têm um layout padrão) que são documentação do produto. Eu quero criar algum tipo de página combinação que vai puxar todos os outros o conteúdo da página e concatenar-los em uma página longa.

IFrames não vai funcionar porque eu não sei o tamanho de cada página. Eu poderia ter a página combinação fazer uma tonelada de #includes, e que iria funcionar, mas eu não quero ter que manter a atualização mestre a data (temos um banco de dados de nomes de página que pode mudar ao longo do tempo).

Finalmente eu estou atrás de algo que pode obter uma lista de páginas, e para cada um fazer o equivalente de um #include para essa página para a página atual.

Espero que sentido marcas. Quaisquer pensamentos?

Foi útil?

Solução

São seus "Documentação Páginas" estático html ou .aspx também ...

Se o seu conteúdo apenas estático, você pode fazer o seguinte

//assume that the array of page names has come from the DB.
protected void Page_Load(object sender, EventArgs e)
{
    string[] pages = new string [] { "~/Default.html", 
             "~/Default2.html", "~/Default3.html", "~/Default4.html" };

    foreach (string p in pages)
    {
        Response.WriteFile(p);
    }
}

Outras dicas

O que suas páginas parece?

Eu supor que é apenas HTMLs simples e tem um padrão consistente em todas as páginas, não? Tipo, ele tem marcação HTML adequada, juntamente com a cabeça eo corpo e tal?

Em que caso você pode apenas lê-lo como você deseja ler arquivos de texto normais e fazer alguma corda análise sobre eles para extrair a parte dentro de tags corpo e, em seguida, você pode simplesmente concatenar os e imprimi-los Asp- # incluem estilo.

Para obter o nome do caminho real para um arquivo em um site ASP.NET, você pode usar Server.MapPath

var actualDiskFilename = Server.MapPath("~/somewhere/somepage.html");

Todas as classes System.IO trabalhar o mesmo em ASP.NET, para buscar uma lista de arquivos em um diretório virtual, você pode fazer:

var virtualDir = "~/somefolder/";
var actualDir = Server.MapPath(virtualDir);

var files = Directory.GetFiles(actualDir);

É isso que você está procurando?

Se as páginas são aspx-documentos que você pode usar Server.Execute para executar a página e retornar o HTML gerado. Depois, você pode analisar o html e remover os-general e corpo-tags e concatenar o restante html em sua página.

Você diz IFRAMES não vai funcionar porque você não sabe os tamanhos? Bem, por que não atualizar o tamanho das IFRAMES acordo com o tamanho.

Criar um IFRAME tamanho padrão e carregar a página, em seguida, com a ajuda de atualização javascript o tamanho. Você deve olhar em algum framework javascript como protótipo ou jquery

Parece-me que você deve repensar o formato desde o início, se possível. Se você armazenou o conteúdo dos arquivos de banco de dados ou XML, por exemplo, então suas páginas individuais podem servir a sua seção, e sua página conglomerado poderia servir-se qualquer combinação do total que você deseja.

não seria tão difícil de converter para se você está falando apenas algumas páginas (menos de uma dúzia). Em seguida, manter a documentação em dia é uma questão de editar o conteúdo, e não os arquivos de exibição (na verdade, XML é mais fácil do que um banco de dados a este respeito).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top