我有1个aspx页面和1个用户控件。我想在用户控制页面后面的代码中访问aspx页面的隐藏字段。
请帮我解决这个问题。
答案 0 :(得分:3)
使用Page.FindControl
var hiddenField = this.Page.FindControl("hiddenField") as HiddenField;
答案 1 :(得分:2)
以下是一种方法:
我不喜欢这种方法,因为它将用户控件与包含的页面类型紧密结合,但这似乎经常出现在Web表单中。
示例
public class MyPage : Page
{
public HtmlInputHidden MyHiddenField
{
get{ return this.hdnField1; }
}
}
public class MyUserControl : UserControl
{
protected override OnLoad( EventArgs e )
{
MyPage p = (MyPage)Page;
HtmlInputHidden h = p.MyHiddenField;
}
}
示例2 - 父级初始化子级
这个例子更清晰,因为孩子不知道其父母。但是,它需要父级在正确的时间初始化子级(这对于Web表单页生命周期来说可能很棘手)并且要求父级知道子级的内部工作。
public class MyPage : Page
{
protected override OnLoad( EventArgs e )
{
this.MyUserControl.Initialize( this.MyHiddenField );
}
}
public class MyUserControl : UserControl
{
public void Initialize( HtmlInputHidden input )
{
// now child user control has access to the data without needing to know
// about its parent
}
}