如何访问“用户”控件中的“父级的隐藏字段”页

本文关键字:何访问 隐藏 字段 控件 访问 用户 | 更新日期: 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
    }
}