3

我有一个用户控件,上面有一个文本框,现在这个用户控件位于我在 aspx 页面上使用的另一个用户控件上,如何获取第一个用户控件上的文本框的值。

4

4 回答 4

9

在您的用户控件中编写一个属性以公开其内容,例如,

public string TextBoxValue
{
    get { return txtControl1.Text; }
}

这样您就可以获得文本框的值,而无需将整个文本框控件公开为公共对象。

于 2009-04-10T09:37:25.487 回答
2

Jon Limjap 的回答为此类问题提供了最佳解决方案 - 使用公共属性公开控件值。

但是,如果您不想这样做(或者您必须为很多控件这样做并且希望避免为每个控件创建公共属性),您可以使用反射在 ChildControls 中“找到控件”所需的用户控件:

TextBox txt = UserControl1.FindControl("myTextBox") as TextBox;

if (txt != null)
{
  string val = txt.Text;
}
于 2009-04-10T10:04:47.667 回答
1

.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 页面中,您可以使用 FirstName 访问

TestControl.FirstName
You can set the FirstName of the control from aspx page using
TestControl.FirstName = "Suzzanne"

注意:参考

于 2013-01-01T10:55:30.183 回答
0

我认为从请求中获取价值更容易。您可以编写这样的通用方法来找到它:

    string get_value(string control_name)
    {
        var key = Request.Form.AllKeys.First(x => x.ends_with(control_name));
        return Request.Form[key];
    }
于 2012-06-30T03:02:49.943 回答