Question

J'ai un tas de pages Web ASP.NET (qui ont une présentation standard) qui constituent la documentation du produit. Je souhaite créer une sorte de page combinée qui extraira tout le contenu de la page et les concaténera en une longue page.

Les IFrames ne fonctionneront pas car je ne connais pas la taille de chaque page. Je pourrais faire en sorte que la page combinée fasse 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 pouvant changer avec le temps).

En fin de compte, je recherche quelque chose qui puisse obtenir une liste de pages et pour chacune d’elles faire l’équivalent d’un #include pour cette page dans la page en cours.

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

Était-ce utile?

La solution

Sont-ils vos "Pages de documentation"? static html ou .aspx est également ...

si c'est juste du contenu statique, vous pouvez faire ce qui suit

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

Autres conseils

À quoi ressemblent vos pages?

Je suppose que ce n'est que du HTML pur et un motif uniforme sur toutes les pages, non? Comme, il a le balisage HTML approprié avec HEAD et BODY et autres?

Dans ce cas, vous pouvez le lire comme si vous lisiez des fichiers texte normaux et les analyser à l'aide de chaînes de caractères pour extraire la partie à l'intérieur des balises BODY, puis concaténer ceux-ci et les imprimer avec un style d'inclusion ASP-#.

Pour obtenir le chemin d'accès à un fichier sur un site Web ASP.NET, vous pouvez utiliser Server.MapPath

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

Toutes les classes System.IO fonctionnent de la même manière dans ASP.NET. Pour récupérer une liste de fichiers dans un répertoire virtuel, vous pouvez procéder:

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

var files = Directory.GetFiles(actualDir);

Est-ce ce que vous cherchez?

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

Vous dites qu'IFRAMES ne fonctionnera pas parce que vous ne connaissez pas les tailles? Pourquoi ne pas mettre à jour la taille des IFRAMES en fonction de la taille.

Créez un IFRAME de taille par défaut et chargez la page, puis, à l’aide de javascript, mettez à jour la taille. Vous devriez regarder un framework javascript tel qu'un prototype ou un jquery

.

Il me semble que vous devriez repenser le format dès le début, si possible. Si vous stockez le contenu dans la base de données ou dans des fichiers XML, par exemple, vos pages individuelles peuvent afficher leur section et la page de votre conglomérat, une combinaison du total souhaité.

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top