2011-07-13 66 views
3

想象一下,你有兩個masterpages:asp.net:主頁的繼承不會繼承佔位符嗎?

母版 「A」: 佔位符-A1 佔位符-A2

MaterPage 「B」(從A繼承) 填充的 「佔位符-A1」

我必須創建從「B」繼承的普通aspx HTML頁面&填充「PlaceHolder-A2」(從MasterPage「A」)?

我該怎麼做?

我發現的唯一方法是通過佔位符「PlaceHolder-B1」將「PlaceHolder-A2」翻譯爲MasterPage「B」,該佔位符爲「PlaceHolder-A2」內的空白。那麼頁面應該填充「PlaceHolder-B1」。

有沒有更簡單的方法來做到這一點?

預先感謝您!

+0

你究竟想在這裏完成什麼?您先前對PlaceHolder-B1進行了單一引用,而未事先描述它。我有一種感覺,你所尋找的最終結果可以比你的方法更容易完成。 – MoarCodePlz

回答

3

因爲你的問題是,是否有一個「簡單」的方式做到這一點,我想說的答案是否定的。真正你需要做的就是確保內容傳播者通過每個母版頁向下傳播。你甚至可以使用相同的名稱。我使用嵌套masterpages所有的時間,例如,我總是傳播佔位符<head>區域頁面:

<asp:Content ID="Content1" ContentPlaceHolderID="Head" runat="Server"> 
    <asp:ContentPlaceHolder ID="Head" runat="server"> 
    </asp:ContentPlaceHolder> 
</asp:Content> 

我看不出有什麼太複雜有關?出於某種原因,您無法更改其中一個主頁面嗎?如果是這樣,那麼您將被迫以編程方式訪問ContentPlaceHolder,類似於Precious Roy所描繪的內容(雖然我不確定他的示例對於您描述的場景是否100%正確)。

0

這聽起來有點複雜..因爲你在頁面之間有一些共同的部分,你可能會考慮使用'用戶控件'。您可以將用戶控件放置在您想要的頁面上的任何地方。

2

更容易是一個相對術語。在關聯主頁面和佔位符方面沒有更簡單的方法來處理它,但可以從後面的代碼中進行設置。請參閱this問題以供參考。 Roadie57比我能解釋得更好。不知道如果你正在使用VB,但如果沒有,你可以做這樣的:

ContentPlaceHolder mpContentPlaceHolder = new ContentPlaceHolder(); 
TextBox mpTextBox = new TextBox(); 
mpContentPlaceHolder = (ContentPlaceHolder)Master.FindControl("PlaceHolderA2"); 
if (mpContentPlaceHolder != null) 
{ 
    ...place content in mpContentPlaceHolder 
}