2014-02-25 191 views
0

我在母版頁中擁有用戶控件(ascx)。 然後我有一個使用該主頁的內容頁面(aspx)。 現在,在內容頁面中,我想要訪問放置在用戶控件中的隱藏域控件。 我該怎麼做?在母版頁的內容頁面中控制用戶控件

我試過以下,但它返回null。

Master.FindControl("MyHiddenField") 
    Master.FindControl("MyUserControl1_MyHiddenField") 

感謝

回答

1

在您的內容頁面(的.aspx)把這個代碼。它將使主頁面爲內容頁面強制輸入。

<%-- The Page directive goes here --%> 
<%@ MasterType TypeName="MyMasterClassName" %> 
<%-- Rest of your code below.. --%> 

在背後的母版頁的代碼,將此代碼

public UserControlTypeName MyUserControl1 
{ 
get {return myUserControl1; } 
set {} 
} 

這使得用戶控件實例公開。您需要將用戶控件的ID重命名爲myUserControl1

然後在你的UserControlTypeName(或者你的類的名稱是用於你的用戶控件的任何名稱)中,可以使用我們在母版頁上所做的相同方式訪問內部控件。

public HiddenField 
{ 
get {return myHiddenField;} 
set {} 
} 

顯然,將MyHiddenField的ID重命名爲myHiddenField以避免衝突。

最後,這允許您的內容通過強大的輸入訪問母版頁上的用戶控件內的控件。

public void Page_Load(object sender, EventArgs e) 
{ 
Master.MyUserControl1.MyHiddenField.Value="Hello, world!"; 
} 

有關進一步的參考資料,請參閱MSDN上的Working with ASP.NET Master Pages programmatically

如果微軟正在收聽...

如果由於某種原因,微軟ASP.NET開發人員正在閱讀這個答案,請考慮做這樣的事情:

<asp:Button runat="server" scope="public" id="MyButton1 /> 

這將使它更容易而不必創建包裝屬性來公開訪問內部控件。

+0

太棒了!這工作。非常感謝!我也喜歡你對微軟的想法。它會簡化很多。 – user2974961

相關問題