2008-10-25 13 views
3

J'ai un tas de pages Web ASP.NET (qui ont une disposition standard) qui sont la documentation du produit. Je veux créer une sorte de page de combinaison qui attirera tout le contenu de l'autre page et les concaténera en une longue page.Comment concaténer des pages Web dans ASP.NET

IFrames ne fonctionnera pas parce que je ne connais pas la taille de chaque page. Je pourrais avoir la page de combinaison faire une tonne de #includes, et cela fonctionnerait, mais je ne veux pas avoir à garder la mise à jour principale à ce jour (nous avons une base de données de noms de pages qui peuvent changer au fil du temps). En fin de compte, je suis après quelque chose qui peut obtenir une liste de pages, et pour chacun faire l'équivalent d'un # inclure pour cette page dans la page en cours.

J'espère que cela a du sens. Des pensées?

+0

Les pages sont-elles au format HTML? –

+0

Je pensais que le point de HTML était HyperText? – tvanfosson

+0

HyperText dans ces âges signifie probablement document Word sur le terminal pas sur les codes côté serveur ... mais l'époque ont changé depuis longtemps .. – chakrit

Répondre

1

votre "Pages de documentation" html statique ou .aspx est aussi ...

si son contenu juste statique, vous pouvez faire le

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

À quoi ressemblent vos pages? Je suppose que ce n'est que du HTML et que le motif est cohérent sur toutes les pages, non? Comme, il a un balisage HTML approprié avec HEAD et BODY et tel?

Dans ce cas, vous pouvez simplement le lire comme si vous lisiez des fichiers texte normaux et les analyser pour en extraire la partie à l'intérieur des balises BODY, puis les concaténer et les imprimer ASP- # include style .

Pour obtenir le nom de chemin réel vers un fichier sur un site Web ASP.NET, vous pouvez utiliser Server.MapPath

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

Tous les cours System.IO fonctionnent de la même dans ASP.NET, chercher une liste des fichiers un répertoire virtuel, vous pouvez faire:

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

var files = Directory.GetFiles(actualDir); 

Est-ce ce que vous cherchez?

0

Si les pages suivantes sont des documents ASPX vous pouvez l ' utilisez Server.Execute pour exécuter la page et renvoyer le code HTML généré. Ensuite, vous pouvez analyser le code HTML et supprimer les balises head et body et concaténer le html restant dans votre page.

0

Vous dites que IFRAMES ne fonctionnera pas parce que vous ne connaissez pas les tailles? Eh bien, pourquoi ne pas mettre à jour la taille des IFRAMES en fonction de la taille.

Créer une taille IFRAME par défaut et charger la page, puis à l'aide de javascript mettre à jour la taille. Vous devriez regarder un cadre javascript comme prototype ou jquery

0

Semble à moi comme vous devriez repenser le format depuis le début, si possible. Si vous stockez le contenu dans la base de données ou les fichiers XML, par exemple, vos pages individuelles pourraient servir leur section, et votre page de conglomérat pourrait servir n'importe quelle combinaison du total que vous voulez.

Ne serait pas si difficile à convertir si vous ne parlez que de quelques pages (moins d'une douzaine). Ensuite, garder la documentation à jour est une question d'édition du contenu, pas des fichiers d'affichage (il est vrai que XML est plus facile qu'une base de données à cet égard).

Questions connexes