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 ;
}