2010-12-10 49 views
3

我正在對多個應用程序在同一臺服務器上運行的環境進行原型設計,但它們都共享一個母版頁。有沒有辦法從當前應用程序之外加載母版頁?

是否可以從其他應用程序加載母版頁?在我的應用程序之一,我有這樣的代碼:

protected override void OnPreInit(EventArgs e) 
    { 
     base.OnPreInit(e); 
     this.MasterPageFile = "~/../MasterPages/Root.master"; 
    } 

這樣做是設置主頁面文件坐在我目前的應用程序之外。 (請注意「......」波浪號之後 - 所以我要以我目前的應用程序的根目錄,然後加緊目錄下找到一個母版頁。)

ASP是不滿這樣的:

The virtual path '/MasterPages/Root.master' maps to another application, which is not allowed. 

我明白,它可能會強調沒有支持類的事實,但如果我在代碼隱藏中沒有任何東西,並且我選擇不從任何東西繼承我的母版頁 - 那麼整個東西都包含在「.master」文件中?

有沒有辦法做到這一點?

回答

1

只是在想套的,但如果你創建映射到同一物理目錄中的每個應用程序的虛擬目錄下:

protected override void OnPreInit(EventArgs e) 
{ 
     base.OnPreInit(e); 
     this.MasterPageFile = "~/MasterPages/Root.master"; 
} 

所以,你可能有一個物理佈局:

C:\的Inetpub \ wwwroot的\ MasterPages
C:\的Inetpub \ wwwroot的\ App1的
C:\的Inetpub \ wwwroot的\ App2的

你會再有IIS設置,如:

根\應用1
根\應用1 \ MasterPages
根\應用2
根\應用2 \ MasterPages

+0

兩個答案都是正確的。嚴格標記這一點是爲了反應的深度。 – Deane 2010-12-15 16:23:19

3

您可能會考慮將虛擬目錄映射到應用程序文件夾結構中,然後該目錄可以同時映射到多個應用程序。

0

我們做了我們母版頁非常通用。每個母版頁都將使用WebRequest來捕獲我們常見的馬蹄形html(或.aspx)頁面。

這種方法最難的是我們必須在馬蹄形標記。這些標記將指示應用程序可以替換的內容以及放置其內容的位置。

+0

我已經嘗試了你的建議。這對我們來說是巨大的痛苦。 – Deane 2010-12-15 15:23:48

+0

這對我們來說是一個很大的痛苦,但是一旦我們把這個過程放在適當的位置,它就可以添加/更新應用程序。由於我們的馬蹄具有強制性的外觀和感覺,它可能是最好的方式,(作爲應用程序開發人員,您不必擔心創建馬蹄鐵,如果它符合要求)。 – Lareau 2010-12-15 17:37:31

相關問題