質問

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

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

最終的には、ページのリストを取得できるものを探しています。各ページについて、そのページの#includeと同等の処理を現在のページに行います。

それが理にかなっていることを願っています。何か考えはありますか?

役に立ちましたか?

解決

「ドキュメントページ」は静的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);
    }
}

他のヒント

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

単なるHTMLであり、すべてのページで一貫したパターンを持っていると思いますか?たとえば、適切なHTMLマークアップとHEADやBODYなどがありますか?

この場合、通常のテキストファイルを読んで、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);

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

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

サイズがわからないため、IFRAMESが機能しないということですか?さて、サイズに応じてIFRAMESのサイズを更新しないでください。

デフォルトのサイズIFRAMEを作成してページをロードし、javascriptを使用してサイズを更新します。プロトタイプや jquery

などのJavaScriptフレームワークを確認する必要があります。

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top