Request.Params、Request.QueryString、Request.Form都可以获取客户端提交的数据。他们之间有什么不同呢?
Request方法
Request:Request["id"]是一个复合功能读取函数。它从几个集合取数据是有顺序的,从前到后的顺序依次是:QueryString > Form > Cookies > ClientCertificate > ServerVariables,也即是一般get比post优先级高些。Request对象按照这样的顺序依次搜索这几个集合中的变量,如果有符合的就中止,后面的就不管了
做为一个优秀的程序员要养成好的习惯,记得在request后面加上集合的名字
<form method="post" action="xxx.aspx?id=2">
<input id="id" type="text" name="id">
</form>
当我们提交这个表单时同时传递了两个id值,一个是form里input的id它以post方式提交,而另一个是action里的url传递了一个以get方式提交的id。那麽我们如果用Request("id")得到的是哪一个值?就得据其优先级才知道,一般应该是get比post优先级高些
Request对象可以不指明具体使用QueryString或是form方法,如request("变量"),因为它能自动识别,不过还是指明为好,否则,要它自己判断也得花些微时间,影响程序执行效率
Request.Params方法
Request.Params是所有post和get传过来的值的集合它依次包括request.QueryString、request.Form、request.cookies和request.ServerVariable
Request.QueryString方法
Request.QueryString["id"] 只能读取通过地址栏参数传递过来的名为id的参数(以GET方式提交的数据),如果不存在名为id的地址栏参数Request.QueryString["id"]将会返回空
例如:
stra=Request.QueryString ["strUserld"]
Request.form方法
它是用来接收表单变量的(post 方法)
Request.QueryString和Request.form
Request.QueryString和Request.form除了接收方法不同外,还有传递数据量大小的问题,request.form方法能接收的数据没有限制,而request.QueryString只能接收数据量小于2KB数据,当然后者的执行速度要比前者快。一般往数据库请求查询时用request.QueryString方法,因为查询时只不过那么几个关键词,没有必要用request.form方法而导致查询速度变慢。另外,request.QueryString方法还会把数据信息显示在客户端浏览器地址栏中,安全性较差。 request.form方法不存在上述问 题,因此大量被应用在多个文本域提交数据和用户登陆的场合