如何从页面访问文本框值到UserControl

时间:2013-04-26 12:46:32

标签: c# asp.net

我正在使用带有文本框控件(txtid)的aspx页面(example.aspx),并且在同一页面上我创建了一个带有图像按钮(click.png)的用户控件(access.ascx)。我必须将文本框(txtid)检索到用户控件中。如何检索文本框控件(txtid)的值到usercontrol页面(access.ascx)?

4 个答案:

答案 0 :(得分:3)

尝试类似:

TextBox txt= (TextBox)this.Parent.FindControl("txtid");

将进入你的usercontrol。 this.Parent应该引用example.aspx页面。

答案 1 :(得分:2)

在您的用户控件中,您可以添加如下属性:

public property Text
{
  ..
}

然后页面可以将页面文本框中的值分配给此属性,然后用户控件可以使用该属性。您也可以使用SetText(string text)方法。

答案 2 :(得分:1)

试试这个

TextBox txt1 = (TextBox)this.Parent.FindControl("txtid")

答案 3 :(得分:1)

在您的用户控件中:

TextBox textBox = (TextBox)this.FindSiblingControl("txtid");

支持方式:

public static class StaticClassToHandleExtensions
{
    public static Control FindSiblingControl(this Control control, string id)
    {
        Control parent = control.Parent;
        while (parent.GetType() != typeof(ContentPlaceHolder) && parent.GetType() != typeof(Page))
            parent = parent.Parent;

        return parent.FindControl(id);
    }
}

第一级Parent可能与您的控件不在同一级别,因此您需要继续向上移动。此示例在ContentPlaceHolder上停止,它将是页面的顶级,它的主页面为Page,这将是没有母版页的页面的顶级。 FindControl方法将搜索其整个控件树,这意味着它将搜索多个级别的深度,因此这是最安全和最简单的解决方案。