如何访问“用户”控件中的“父级的隐藏字段”页
本文关键字:何访问 隐藏 字段 控件 访问 用户 | 更新日期: 2023-09-27 18:29:26
我有一个aspx页面和一个用户控件。我想访问用户控制页代码隐藏部分aspx页的隐藏字段。
请帮我一下。
使用Page.FindControl
var hiddenField = this.Page.FindControl("hiddenField") as HiddenField;
这里有一种方法:
- 将隐藏的字段控件作为包含页的公共属性公开
- 在用户控件中,将Page强制转换为包含页面的特定类型
- 访问属性
我真的不喜欢这种方法,因为它将用户控件与包含的页面类型紧密地耦合在一起,但这种情况似乎在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
}
}