2008-10-25 24 views
3

我有一堆ASP.NET網頁(有標準佈局),它們是產品文檔。我想創建某種組合頁面,將所有其他頁面內容拉入並將它們連接成一個長頁面。如何連接ASP.NET中的網頁

IFrames將無法工作,因爲我不知道每個頁面的大小。我可以讓組合頁面執行大量的#includes,並且這將起作用,但我不想讓主更新保持最新狀態(我們有一個可隨時間變化的頁面名稱數據庫)。

最終,我追求的東西可以得到一個頁面列表,併爲每個人做相當於該頁面的#include到當前頁面。

我希望這是有道理的。有什麼想法嗎?

+0

頁面是純HTML嗎? – 2008-10-25 18:01:24

回答

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

你的網頁是什麼樣子的?

我認爲這只是純HTML,並且在所有頁面中都有一致的模式,不是嗎?就像,它有適當的HTML標記以及HEAD和BODY等?

在這種情況下,您可以像閱讀普通文本文件一樣閱讀它,並對其進行一些字符串解析以提取BODY標籤內的部分,然後您可以將它們連接起來並將它們打印出來,然後將它們打印出來。 。

獲得實際的路徑名到ASP.NET網站上的一個文件,你可以使用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); 

這是你在找什麼?

0

如果頁面ASPX的文檔,你可以使用Server.Execute來執行頁面並返回生成的html。然後,您可以解析html並刪除頭部和身體標記,並將剩餘的html連接到您的頁面中。

0

你說IFRAMES不起作用,因爲你不知道尺寸?那麼爲什麼不根據尺寸更新IFRAMES的尺寸。

創建一個默認的大小IFRAME並加載頁面,然後藉助javascript更新大小。你應該看看一些JavaScript框架,如原型或jquery

0

對我來說聽起來像你應該從頭開始重新考慮格式,如果可能的話。例如,如果您將內容存儲在數據庫或XML文件中,那麼您的各個頁面可以提供他們的部分,並且您的集團頁面可以提供您想要的總數的任意組合。

如果您只說幾頁(少於十幾頁),那麼轉換就不那麼難。然後保持文檔是最新的是編輯內容,而不是顯示文件(不可否認,在這方面XML比數據庫更容易)。