如何从页面访问usercontrol的值?

jes*_*ges 6 c# asp.net user-controls

嗨,我已经用一个文本框创建了名为test.ascs的用户控件.现在我在default.aspx页面中添加了这个用户控件.如何从default.aspx页面访问该文本框值?

有机会吗?

Bri*_*per 7

我通常直接在test.ascx代码中公开文本框的text属性,如下所示:

public string Text
{
    get { return txtBox1.Text; }
    set { txtBox1.Text = value; }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以从default.aspx后面的代码中获取并设置该文本框,如:

usrControl.Text = "something";
var text = usrControl.Text;
Run Code Online (Sandbox Code Playgroud)


Kha*_*anS 4

从默认页面尝试使用用户控件查找文本框。

TextBox myTextBox = userControl.FindControl("YourTextBox") as TextBox;
string text = myTextBox.text;
Run Code Online (Sandbox Code Playgroud)

  • 这个方法或许很管用,但味道却很糟糕。您已经对文本框 ID 进行了硬编码。在尝试访问其属性之前,您不会检查结果是否为 != null。使用 FindControl 比以正确的 OO 方式进行操作并在用户控件上公开属性要慢得多且效率低下。 (3认同)