嗨我创建了一个名为test.ascs的用户控件带有一个文本框。现在我在我的default.aspx页面中添加了这个用户控件。我如何从我的default.aspx页面访问该文本框的值?如何从页面访问usercontrol的值?
有没有机会?
嗨我创建了一个名为test.ascs的用户控件带有一个文本框。现在我在我的default.aspx页面中添加了这个用户控件。我如何从我的default.aspx页面访问该文本框的值?如何从页面访问usercontrol的值?
有没有机会?
从您的默认页面尝试使用您的用户控件查找文本框。
TextBox myTextBox = userControl.FindControl("YourTextBox") as TextBox;
string text = myTextBox.text;
如果是这种控制的目的,然后创建一个公开此值在用户控件的公共属性,你就可以访问您的网页:
string textBoxValue = myUserControl.GetTheValue;
其中'myUserControl'是标记中UserControl的ID:'
我通常暴露文本框的文本属性直接在test.ascx后面的代码是这样的:
public string Text
{
get { return txtBox1.Text; }
set { txtBox1.Text = value; }
}
然后你可以从代码设置文本框状的Default.aspx的背后:
usrControl.Text = "something";
var text = usrControl.Text;
如何从在页面中的用户控件,其使用该用户控件访问的文本框的值
步骤1:在用户控制使一个事件处理程序
public event EventHandler evt;
protected void Page_Load(object sender, EventArgs e)
{
txtTest.Text = "text123";
evt(this, e);
}
2:在页致电事件处理程序
protected void Page_Load(object sender, EventArgs e)
{
userCntrl.evt += new EventHandler(userCntrl_evt);
}
void userCntrl_evt(object sender, EventArgs e)
{
TextBox txt = (TextBox)userCntrl.FindControl("txtTest");
string s = txt.Text;
}
此方法可能工作,但它闻起来很大。你有硬编码的文本框ID。在尝试访问其属性之前,您没有检查结果是否为!= null。使用FindControl比使用适当的面向对象的方式进行并且暴露用户控件上的属性要慢得多并且效率低下。 – slugster 2010-04-09 09:16:55