2008-12-02 75 views

回答

3

如果將其添加到ContentPlaceHolder中,並且子頁面將內容添加到該ContentPlaceHolder中 - 則用戶控件將不再顯示。 IOW,您添加的控件僅爲默認

只要將其添加到ContentPlaceHolder的外部,如果您希望它始終可見即可。

+1

換句話說,放置在母版頁上的ContentPlaceHolder內的任何標籤都將用作默認內容,但通常它們被內容頁面的相應內容標籤內的標籤取代,除非內容頁面省略就是這樣一個相應的Content標籤。 – Triynko 2011-07-28 18:31:18

0

我並不積極,但我認爲您需要使用Page.LoadControl()在運行時正式加載用戶控件到頁面。

+0

在運行時加載的用戶控件需要用LoadControl加載,而不是「new MyUserControl」,否則控件的標籤不會被解析,也不會實例化控件的任何子對象。這會導致意外的空控制和恢復視圖狀態的問題。但無論如何,對於這個特定的問題,我認爲這正是Mark Brackett所說的......主頁面上的ContentPlaceHolder *內部的東西正在被子頁面的相應Content標籤中的東西所取代(除非內容頁面省略上述相應的標籤)。 – Triynko 2011-07-28 18:25:52

0

如果我正確地閱讀了這個內容,您在母版頁中有一個控件,需要從子頁面引用它來更改它的可見性?或者我有錯誤的方式?

無論如何,這裏就是我通常做,在VB.NET中,應該不會太難端口;-)

在aspx頁面:

<%@ Reference Control="~/path/to/my/customControl.ascx" %> 

在代碼隱藏:

Dim customControl As ASP.customcontrol_ascx = Master.FindControl("customControl") 
If customControl IsNot Nothing Then 
    ... 
End If 
相關問題