找到控件和html标签

时间:2012-09-24 13:32:00

标签: asp.net

我的默认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”)返回null值!因为我使用<input>,我该如何处理这个控件?

3 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

MSDN:

  

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

因为不是服务器控制它找不到它是不可能的!任何其他方式来处理非服务器端的控件?

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