Request.Form.Get()可以获取空值,其他的获取的是空值是会出错。 Request.Form是获取以POST方式提交的表单数据; Request:包含以上两种方式(优先获取GET方式提交的数据),它会在QueryString、Form、ServerVariable中都搜寻一遍。 而且有时候也会得到不同的结果。如果你仅仅是需要Form中的一个数据,但是你使用了Request而不是Request.Form,那么程序将在 QueryString、ServerVariable中也搜寻一遍。如果正好你的QueryString或者ServerVariable里面也有同名的项,你得到的就不是你原本想要的值了。 |
纠正一个概念,使用Request.Form和使用Request是不一样的:
使用Request.Form,ASP是从FORM集合中搜索。
使用Request,ASP是以如下顺序进行搜索:
1.QueryString
2.Form
3.Cookies
4.ClientCertificate
5.ServerVariables
如果在QueryString里也存在一个同Form里相同的变量名,则不会返回Form里的值,而是QueryString的。
Request从几个集合取数据是有顺序的,从前到后的顺序依次是 QueryString,Form,最后是ServerVariables。Request对象按照这样的顺序依次搜索这几个集合中的变量,如果有符合的就中止,后面的就不管了。
Request.QueryString主要是获取地址栏参数或者以Get方式提交的数据
而Request则包含以上两种方式,会在Request.QueryString(优先)和Request.Form中都查询一遍变量。但是优先获取GET方式提交的数据,即Request.QueryString
下面举例说明:
需求:在asp页面上提交数据,.cs页面获得和处理数据发邮件。
html
在action中写入要提交到的页面。
cs
string roomnum = Request.Form["roomNum"];//客房数量
if(name==null||age==null||sex==null||phone==null||cardtype==null||cardno==null||datefrom==null||dateto==null||roomtype==null||address==null||roomnum==null)
{
Response.Write("<script>alert('请录入完整信息');window.history.go(-1);</script>");
return;
}