1

我的默认 aspx 文件中有此代码:

<body>
    <form id="form1" runat="server">
    <div>
        <asp:PlaceHolder ID="holder1" runat="server">
            <asp:Label ID="label1" runat="server" Text="Label">
            </asp:Label>
            <input type="text" ID="txt" runat="server"/>
            <asp:TextBox ID="txt2" runat="server"></asp:TextBox>
             <asp:Button Text="Ok" ID="btnOk" runat="server" onclick="btnOk_Click" />
        </asp:PlaceHolder>


    </div>
    </form>
</body>

我背后的代码是:

        TextBox tb1 = holder1.FindControl("txt") as TextBox;
        Response.Write(tb1.Text);
        TextBox tb2 = holder1.FindControl("txt2") as TextBox;
        Response.Write(tb2.Text);

我的问题是 findcontrol ("txt") 返回空值!!!因为我用过<input>,我该如何处理这个控件?

4

3 回答 3

4

首先,您不需要,holder1.FindControl因为您可以直接访问控件。

要获得input控制权,请使用代码;

HtmlInputText tb1 = this.txt;
Response.Write(tb1.Value);

您可能需要导入 System.Web.UI.HtmlControls。

Using System.Web.UI.HtmlControls;

编辑

要查找通过 Javascript 动态添加的控件,您需要使用该Request对象。

string theValue = Request.Form["txt"].ToString();
于 2012-09-24T13:36:18.053 回答
1

一个input type="text"不是一个TextBox。因此,您应该将其转换为HtmlInputText或使用 aTextBox代替。

var txt = (HtmlInputText)row.FindControl("txt");

请注意,您需要添加using System.Web.UI.HtmlControls,

于 2012-09-24T13:36:24.177 回答
0

MSDN:

Control.FindControl : Method 在当前命名容器中搜索指定的服务器控件。

由于不是服务器控制,所以很难找到它!任何其他方式来处理不是服务器端的控件?

如果有人想要获取不在服务器上运行的文本框的文本会发生什么。

于 2012-09-24T13:37:00.410 回答