我有简单的html页面,包含3个文本框。
<form id="form1" method=get action="http://mysite.com/default.aspx" runat="server">
<div>
<input id="name" type="text" value="Amy" />
<input id="email" type="text" value="amy@jf.com"/>
<input id="phone" type="text" value="2125552512" />
</div>
<input id="Submit1" type="submit" value="submit" />
</form>
现在当它加载default.aspx时,我在page_load的vb后端有这段代码。
Dim tbName As TextBox = Page.FindControl("Name")
Dim tbPhone As TextBox = Page.FindControl("Phone")
Dim tbEmail As TextBox = Page.FindControl("Email")
If page.request("name") & "" <> "" AndAlso tbname IsNot Nothing Then
tbname.text = page.request("name")
End If
If page.request("email") & "" <> "" AndAlso tbEmail IsNot Nothing Then
tbEmail.text = page.request("email") & ""
end If
If page.request("phone") & "" <> "" AndAlso tbphone IsNot Nothing Then
tbPhone.text = page.request("phone") & ""
End If
页面加载但是这些文本框是空的。我做错了什么?
答案 0 :(得分:1)
如果您希望能够在服务器端访问这些控件,则需要为每个控件添加runat="server"
属性。
此外,您引用的TextBox
类型是您未使用的ASP.NET控件。添加runat="server"
代码后,您要使用的内容为HtmlInputText
。
您可以使用TextBox ASP.NET控件而不是TextBox
元素来使用<input>
类型:
<asp:TextBox ID="name" runat="server" Value="Amy" />
如果您的所有ASP.NET页面都在处理来自表单的请求,那么就不需要引用任何文本框或输入控件 - 因为它们不作为ASP.NET控件存在,所以不可能。您需要做的就是从Request.QueryString中读取值。
如果意图是输入在ASP.NET页面上可见和/或可编辑,我建议将HTML表单移动到ASP.NET页面中。
答案 1 :(得分:0)
这与webform的功能不同。
首先,您在表单中的输入需要是服务器控件:ex&lt; asp:TextBox runat="server" id="name" Text="value" />
然后在您的代码隐藏文件中,您不必经过Page.FindControl("YourInput")
,而只需this.YourInput.Text