Frage

Ich habe eine Reihe von ASP.NET Web-Seiten (die ein Standard-Layout), die Produktdokumentation sind. Ich möchte eine Art Kombination Seite erstellen, die alle anderen Seiteninhalt ziehen wird und verketten sie in einer langen Seite.

IFrames wird nicht funktionieren, weil ich weiß nicht, die Größe jeder Seite. Ich konnte die Kombination Seite eine Tonne #includes haben, und das würde funktionieren, aber ich will nicht das Master-Update auf dem Laufenden zu halten haben (wir eine Datenbank von Seitennamen haben, die im Laufe der Zeit ändern können).

Schließlich bin ich nach etwas, das eine Liste der Seiten, bekommen, und für jeden einzelnen für diese Seite in die aktuelle Seite das Äquivalent einer # include tun.

Ich hoffe, das macht Sinn. Irgendwelche Gedanken?

War es hilfreich?

Lösung

Ist Ihre „Dokumentation Seiten“ statischen HTML oder ASPX ist auch ...

Wenn es nur statische Inhalte, könnten Sie Folgendes tun

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

Andere Tipps

Wie sieht Ihre Seiten aussehen?

Ich nehme an, es ist einfach nur HTMLs und haben ein einheitliches Muster auf allen Seiten, nicht wahr? Wie hat es die richtigen HTML-Markup zusammen mit Kopf und Körper und so?

In diesem Fall können Sie es nur lesen kann, wie Sie normale Textdateien lesen würden und eine Schnur auf sie Parsen tun das Teil innerhalb BODY-Tags zu extrahieren und dann können Sie nur diejenigen verketten und drucken Sie sie aus ASP- # include Stil.

Um die tatsächlichen Pfadnamen in eine Datei auf einer ASP.NET-Website zu erhalten, können Sie Server.MapPath verwendet

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

All System.IO Klassen in ASP.NET die gleiche Arbeit, eine Liste von Dateien in einem virtuellen Verzeichnis zu holen, können Sie tun:

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

var files = Directory.GetFiles(actualDir);

Ist das, was Sie suchen?

Wenn die Seiten sind aspx-Dokumente, die Sie Server.Execute verwenden können, um die Seite und gibt die generierten HTML auszuführen. Dann können Sie die html analysieren und die Kopf- und Körper-Tags entfernen und die restlichen HTML-Code in Ihre Seite verketten.

Sie sagen IFRAMES wird nicht funktionieren, weil Sie die Größen nicht wissen? Nun, warum nicht aktualisieren, um die Größe der IFRAMES entsprechend der Größe.

Erstellen Sie eine Standardgröße IFRAME und laden Sie die Seite, dann mit Hilfe von JavaScript-Update der Größe. Sie sollten an einem bestimmten JavaScript-Framework wie Prototyp aussehen oder jquery

Klingt für mich wie Sie das Format von Anfang an überdenken sollten, wenn möglich. Wenn Sie den Inhalt in der Datenbank oder XML-Dateien gespeichert sind, zum Beispiel, dann einzelne Seiten konnten ihre Abschnitt dienen nach oben, und Ihre Konglomerat Seite könnte eine beliebige Kombination der insgesamt dienen, die Sie wollen.

Wäre es nicht so schwer sein, zu konvertieren, wenn Sie nur ein paar Seiten (weniger als ein Dutzend) im Gespräch. Dann halten Sie die Dokumentation auf dem neuesten Stand ist eine Frage der Bearbeitung der Inhalte, nicht die Anzeige von Dateien (zugegebenermaßen, XML ist einfacher als eine Datenbank in dieser Hinsicht).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top