我在母版页中拥有用户控件(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