3

製品ドキュメントである (標準レイアウトの) ASP.NET Web ページが多数あります。他のすべてのページ コンテンツを取り込み、それらを 1 つの長いページに連結する何らかの組み合わせページを作成したいと考えています。

各ページのサイズがわからないため、IFrames は機能しません。組み合わせページに大量の #includes を実行させることもできますが、それは機能しますが、マスターの更新を最新の状態に保つ必要はありません (時間の経過とともに変化する可能性のあるページ名のデータベースがあります)。

最終的に、私はページのリストを取得できるものを求めており、それぞれに対して、そのページを現在のページに #include するのと同じことを行います。

それが理にかなっていることを願っています。何かご意見は?

4

5 に答える 5

1

「ドキュメントページ」は静的htmlまたは.aspxでもありますか...

静的コンテンツだけの場合は、次のことができます

//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);
    }
}
于 2008-10-25T18:05:08.763 に答える
0

可能であれば、フォーマットを最初から考え直したほうがよいように思えます。たとえば、コンテンツをデータベースまたは XML ファイルに保存した場合、個々のページはそれぞれのセクションを提供し、コングロマリット ページは必要な合計の任意の組み合わせを提供できます。

数ページ (ダース未満) しか話していない場合は、変換するのはそれほど難しくありません。次に、ドキュメントを最新の状態に保つことは、表示ファイルではなくコンテンツを編集することです (確かに、XML はこの点でデータベースよりも簡単です)。

于 2008-10-25T19:43:08.003 に答える
0

ページが aspx ドキュメントの場合、ページServer.Executeを実行して生成された html を返すために使用できます。次に、html を解析して head タグと body タグを削除し、残りの html をページに連結できます。

于 2008-10-25T18:37:42.440 に答える
0

サイズがわからないので、IFRAMES が機能しないということですか。サイズに応じてIFRAMESのサイズを更新してみませんか。

デフォルトのサイズの IFRAME を作成してページをロードし、JavaScript を使用してサイズを更新します。プロトタイプやjqueryなどのJavaScriptフレームワークを検討する必要があります

于 2008-10-25T19:01:22.283 に答える
0

あなたのページはどのように見えますか?

それは単なる HTML であり、すべてのページで一貫したパターンを持っていると思いますよね? 同様に、HEAD や BODY などと一緒に適切な HTML マークアップがありますか?

その場合、通常のテキスト ファイルを読み取るように読み取ることができ、文字列解析を行って BODY タグ内の部分を抽出し、それらを連結して ASP-#include スタイルで出力することができます。

ASP.NET Web サイト上のファイルへの実際のパス名を取得するには、次を使用できます。Server.MapPath

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

すべてのSystem.IOクラスは ASP.NET で同じように機能します。仮想ディレクトリ内のファイルのリストを取得するには、次のようにします。

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

var files = Directory.GetFiles(actualDir);

それはあなたが探しているものですか?

于 2008-10-25T18:01:43.763 に答える