将usercontrol文本框转换为Web控件文本框

时间:2014-08-14 17:22:53

标签: asp.net user-controls

我有以下用户控件:

<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" />

3 个答案:

答案 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属性的值为空,而不是包含文本框的值 - 我们可以看到它被属性设置为 - 问题必须在代码中 - 用户控制的背后。它必须在错误的时间初始化文本框。