我在母版頁中擁有用戶控件(ascx)。 然後我有一個使用該主頁的內容頁面(aspx)。 現在,在內容頁面中,我想要訪問放置在用戶控件中的隱藏域控件。 我該怎麼做?在母版頁的內容頁面中控制用戶控件
我試過以下,但它返回null。
Master.FindControl("MyHiddenField")
Master.FindControl("MyUserControl1_MyHiddenField")
感謝
我在母版頁中擁有用戶控件(ascx)。 然後我有一個使用該主頁的內容頁面(aspx)。 現在,在內容頁面中,我想要訪問放置在用戶控件中的隱藏域控件。 我該怎麼做?在母版頁的內容頁面中控制用戶控件
我試過以下,但它返回null。
Master.FindControl("MyHiddenField")
Master.FindControl("MyUserControl1_MyHiddenField")
感謝
在您的內容頁面(的.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 />
這將使它更容易而不必創建包裝屬性來公開訪問內部控件。
太棒了!這工作。非常感謝!我也喜歡你對微軟的想法。它會簡化很多。 – user2974961