Pregunta

Tengo un montón de páginas web ASP.NET (que tienen un diseño estándar) que son documentación del producto. Quiero crear algún tipo de página de combinación que extraiga todo el contenido de la otra página y los concatene en una página larga.

IFrames no funcionará porque no sé el tamaño de cada página. Podría hacer que la página de combinación haga un montón de #incluye, y eso funcionaría, pero no quiero tener que mantener la actualización maestra actualizada (tenemos una base de datos de nombres de página que puede cambiar con el tiempo).

Finalmente busco algo que pueda obtener una lista de páginas, y para cada una haga el equivalente de un #incluir para esa página en la página actual.

Espero que tenga sentido. ¿Alguna idea?

¿Fue útil?

Solución

¿Son sus " Páginas de documentación " HTML estático o .aspx también ...

si es solo contenido estático, puede hacer lo siguiente

//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);
    }
}

Otros consejos

¿Cómo son sus páginas?

Supongo que son HTML simples y tienen un patrón consistente en todas las páginas, ¿no? Al igual que, tiene un marcado HTML adecuado junto con HEAD y BODY y tal?

En cuyo caso, puede leerlo como si leyera archivos de texto normales y hacer un análisis de cadena en ellos para extraer la parte dentro de las etiquetas BODY y luego puede concatenarlos e imprimirlos ASP- # incluye estilo.

Para obtener el nombre de ruta real a un archivo en un sitio web ASP.NET, puede usar Server.MapPath

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

Todas las clases System.IO funcionan igual en ASP.NET, para obtener una lista de archivos en un directorio virtual, puede hacer:

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

var files = Directory.GetFiles(actualDir);

¿Es eso lo que estás buscando?

Si las páginas son documentos aspx, puede usar Server.Execute para ejecutar la página y devolver el html generado. Luego puede analizar el html y eliminar las etiquetas de encabezado y cuerpo y concatenar el html restante en su página.

¿Dices que IFRAMES no funcionará porque no conoces los tamaños? Bueno, ¿por qué no actualizar el tamaño de los IFRAMES según el tamaño?

Cree un IFRAME de tamaño predeterminado y cargue la página, luego, con la ayuda de JavaScript, actualice el tamaño. Debería mirar un marco de JavaScript como prototipo o jquery

Me parece que debería repensar el formato desde el principio, si es posible. Si almacenó el contenido en la base de datos o archivos XML, por ejemplo, sus páginas individuales podrían servir su sección, y su página de conglomerado podría servir cualquier combinación del total que desee.

No sería tan difícil convertirlo si solo habla unas pocas páginas (menos de una docena). Luego, mantener la documentación actualizada es una cuestión de editar el contenido, no los archivos de visualización (es cierto, XML es más fácil que una base de datos a este respecto).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top