访问母版页的内容页面中的用户控件的控件

时间:2014-02-25 03:05:37

标签: asp.net user-controls master-pages

我在母版页中有用户控件(ascx)。 然后我有一个使用该母版页的内容页面(aspx)。 现在,在内容页面中,我想访问放置在用户控件中的hiddenfield控件。 我该怎么做?

我尝试了以下操作,但它返回null。

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

由于

1 个答案:

答案 0 :(得分:1)

在您的内容页面(.aspx)中放置此代码。它将使主页面强烈输入内容页面。

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

在后面的母版页代码中,放置此代码

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

这使得User Control实例公开。您需要将用户控件的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

如果微软正在听......

如果出于某种原因,Microsoft ASP.NET开发人员正在阅读此答案,请考虑执行以下操作:

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

这比创建包装器属性以使内部控件可公开访问要容易得多。