html方法=得不到将值传递给下一个aspx页面

时间:2010-07-02 18:47:21

标签: html vb.net get methods

我有简单的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

页面加载但是这些文本框是空的。我做错了什么?

2 个答案:

答案 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