我有一个表单,其中有几个输入,当我提交表单来处理信息时,当我尝试阅读它时我不能。
这是表格:
<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”方法,但没有。
我做错了什么?
答案 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。