2011-01-08 35 views
0

當前設置

我目前有三個masterpages和內容頁以下層次:母版頁可以引用具有相同內容和contentplaceholder標籤的另一個母版頁嗎?

  • 一說顯示最終結果根級別的母版。稱此爲「A」
  • 兩個兄弟頁面不相互引用,但包含所有相同的contentplaceholder元素,只是按不同的順序以不同的順序排列,其中包含不同的<div>。兩者都引用根級主頁面。稱這些「B1」和「B2」。
  • 幾個內容頁面引用上面的一個或其他同級母版頁(不是兩個)。通過「C-whatever」調用這些「C1」。

基本上我有:

CN => B1 =>甲

CM => B2 =>甲

此層次結構工作正常。

所需的設定

我想要做的就是添加一個新的水平,內容頁和兄弟masterpages之間的層次結構(一個新的母版頁)。基本上是這樣的:

  • 一個顯示最終結果的根級主頁面。
  • 兩個兄弟網頁加上第三個兄弟。稱它B3
  • 一個新的中間主頁面,動態'選擇'兄弟主頁之一。期望的行爲是將C給出的內容直接傳遞給Bn而不進行修改。 D積極做的唯一事情就是選擇哪個Bn。調用此新的主頁面D.
  • 幾個內容頁面引用新的中間母版頁而不是舊的兄弟。

對此的挑戰是,我是一個相當複雜的產品的範圍內工作,我不能改變原有的兩個兄弟masterpages(B1和B2)或內容頁(C)在任​​何有意義的方式

我想:

CN => d => B1 =>甲

CM => d => B2 =>甲

CK => d => B3 => A

本質上,D應該「通過通過「所有的內容,無論它選擇哪個B級別的母版頁。我不能把這個邏輯放在C級頁面中。

其他細節

  • 所有B級頁面具有相同的內容/標籤的ContentPlaceHolder,公正有序,風格不同。
  • d可以像令人費解,因爲它必須是,只要它不要求修改C或B.
  • 我使用ASP.Net 2.0

這可能嗎?

回答

0

MasterPage沒有Page_PreInit事件,所以對MasterPage層次結構(嵌套或其他)的所有更改都必須來自內容頁面。

所以,如果你可以修改的內容頁面,添加:

void Page_PreInit(object sender, EventArgs e) 
{ 
    //if (someCondition) 
     this.Master.MasterPageFile = "~/Path/B1.master"; 
    //else if (otherCondition) 
     this.Master.MasterPageFile = "~/Path/B2.master"; 
    //etc. 
} 
+0

不知道如果我有那麼多的控制......我給它一個鏡頭。 – Peach 2011-01-10 12:47:50

相關問題