无法从HTML表单

时间:2017-08-16 16:41:58

标签: c# html asp.net

我有一个表单,其中有几个输入,当我提交表单来处理信息时,当我尝试阅读它时我不能。

这是表格:

<form id="form1" action="page.aspx" method="get">
      <input type="text" name="idP" id="idP" value="123456789" />
...
        </form>

然后当我发送到“page.aspx”时,网址显示数据:

localhost/page?idP=123456789

但是当我尝试从代码中读取它们时:

string[] keys = Request.Form.AllKeys;
            for (int i = 0; i < keys.Length; i++)
            {
                Response.Write(keys[i] + ": " + Request.Form[keys[i]] + "<br>");
            }

它没有打印任何内容,AllKeys显示为0值,我尝试使用“Post”方法,但没有。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

与POST和PUT不同,GET请求没有正文 1 ,因此必须通过查询字符串发送表单值。您可以在URI中看到这一点:localhost/page?idP=123456789

所以,你需要使用类似的东西:

var idP = Request.QueryString["idP"];

Request.Form从请求正文中提取值。来自documentation

  

当HTTP请求Content-Type值为“application / x-www-form-urlencoded”或“multipart / form-data”时,将填充Form属性。

如果查看您的请求标头,您会看到Content-Type a)完全丢失,或b)不是其中之一。所以,在这里使用它是不合适的。

1 :从技术上讲,GET请求可以有一个正文,但根据HTTP规范,服务器应该忽略它。有关详细信息,请参阅this answer