我有以下用户控件:
<uc1:TextSearch runat="server" ID="tsClientName" HistoryQueryStringParameter="CN" LabelText="Client Name" />
我正在尝试使用以下代码检索tsClientName字段的值
TextBox txtbox = (TextBox)pnlAdvancedSearch.FindControl("tsClientName");
string var = txtbox.Text.ToString()
但是我收到了这个错误:
Unable to cast object of type 'ASP.usercontrols_gridviewsearch_textsearch_ascx' to type 'System.Web.UI.WebControls.TextBox'
用户控制字段获得以下代码
<asp:TextBox runat="server" ID="txt" MaxLength="20" CssClass="title" />
答案 0 :(得分:1)
您需要从用户控件获取文本框控件,如下所示:
TextBox txtbox = (TextBox)pnlAdvancedSearch.FindControl("tsClientName").FindControl("txt");
答案 1 :(得分:1)
没有必要使用FindControl
和强制转换来进行此类访问。在usercontrol的代码隐藏中,添加一个属性以检索文本:
public string NameText { get { return txt.Text; } }
然后,在托管usercontrol的页面中,您可以使用以下命令获取文本:
string nameText = tsClientName.NameText;
答案 2 :(得分:1)
所以有一个TextboxText
属性,它有一个get
访问器。这应该足够了,因为您希望从用户输入文本框中获得输入。
由于TextboxText
属性的值为空,而不是包含文本框的值 - 我们可以看到它被属性设置为 - 问题必须在代码中 - 用户控制的背后。它必须在错误的时间初始化文本框。