如何在用户控件上获取文本框的值

我有一个用户控件,上面有一个文本框,现在这个用户控件在我在aspx页面上使用的另一个用户控件上如何在第一个用户控件上获取文本框的值。     
已邀请:
在usercontrol中写一个属性以显示其内容,例如,
public string TextBoxValue
{
    get { return txtControl1.Text; }
}
这样,您可以获取文本框的值,而不会将整个文本框控件公开为公共对象。     
Jon Limjap的答案为这类问题提供了最佳解决方案 - 使用公共属性公开控件值。 但是,如果您不想这样做(或者您必须为许多控件执行此操作并且希望避免为每个控件创建公共属性),您可以使用Reflection在ChildControls中“找到控件”所需的UserControl:
TextBox txt = UserControl1.FindControl("myTextBox") as TextBox;

if (txt != null)
{
  string val = txt.Text;
}
    
在.aspx页面的顶部,在标记上方添加以下行。
<%@ Register TagPrefix="Test" TagName="TestControl" Src="Test.ascx" %>
该指令注册控件,以便在处理页面时识别它。 TagPrefix确定控件的唯一命名空间,TagName是用户控件的名称,Src是用户控件的路径。 声明用户控件之类的
<Test:TestControl id="TestControl" runat="Server"/>
访问和设置.aspx页面中的用户控件值: 用户可以通过属性,使用javascript和aspx页面的代码隐藏,从.aspx页面访问和设置用户控件的值。它的详细信息如下所示 使用属性 如果test.ascx控件有两个文本框并且提交按钮。您可以通过在.ascx页面中声明公共属性从.aspx页面访问控件中文本框的值。
public string FirstName
{
get{return txtFirstName.Text;}
set{txtFirstName.Text = value;}
}
在.aspx页面中,您可以使用
TestControl.FirstName
You can set the FirstName of the control from aspx page using
TestControl.FirstName = "Suzzanne"
注:REF     
我认为从请求中获取价值更容易。您可以编写这样的通用方法来查找它:
    string get_value(string control_name)
    {
        var key = Request.Form.AllKeys.First(x => x.ends_with(control_name));
        return Request.Form[key];
    }
    

要回复问题请先登录注册