2014-02-25 137 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

相关问题