2010-04-29 28 views
2

我有一些內容來自CMS,我需要移動到原始的asp.net頁面。由於模板是嵌套的,我想我可以使用嵌套的主頁面來實現它,但是我發現我無法從深層子頁面設置頂層主頁面上的值。ASP.NET嵌套主頁,如何從aspx文件設置首頁的內容?

下面是一個示例。我有contentplaceholders幾個嵌套masterpages:

  • 頂部主站(具有contentPlaceHolder1)
  • 嵌套母,取決於頂部主站(具有contentPlaceHolder2)
  • aspx頁面,依賴於嵌套母,限定含量爲contentPlaceHolder1和2

問題是,asp.net不允許我在content頁面中定義contentPlaceHolder1的值,它應該在嵌套master中定義。但重點是客戶端頁面知道這個值,而不是模板主頁(例如,頁面知道它必須在頂部顯示的圖形,但圖形的佔位符是頂層主控)。

如何在aspx頁面中設置值以便在頂層主頁中呈現?

回答

1

通常情況下,你必須做到以下幾點:

  1. 設置你的母版頁
  2. 上的公用屬性的@MasterPage聲明添加到您要訪問屬性中的任何內容頁面的頂部
  3. 訪問像Master.YourPageProperty = "value";

屬性在嵌套masterpages的情況下,你還必須設置直通使用相同的滿足公共屬性但是在你的嵌套母版頁中做這件事(即定義嵌套母版頁母版頁,並設置虛擬公共屬性,只是將傳遞給嵌套母版的值設置爲最高版母版)。

試着看一下這篇文章,以加強我已經觸及的想法:

+3

我喜歡的想法傳遞特性。事實證明,你也可以在嵌套的master中定義一種類似的傳遞contentPlaceHolders,如下所示: 2010-04-29 13:47:30

0

我通常會讓所有的.aspx頁面從基本頁面繼承,並且在此頁面上,我設置了要共享的任何數據的屬性。然後,在頂級主頁上,您可以投射當前頁面來輸入basepage,然後訪問所有數據。

我通常在我的母版頁上公開基頁作爲屬性,這樣我可以做一個軟轉換,並做空檢查,如果我有任何情況下,不從我的基頁繼承的頁面正在使用主頁面。