QueryString: 获取包含在URL中的一些参数; 获取get方式提交的表单数据
Form: 获取post方式提交的表单数据
Cookie: 获取一些会话状态以及其它的用户个性化参数信息。
除了这四大对象,HttpRequest还提供ServerVariables来让我们获取一些来自于Web服务器变量。
一般情况下,,如果我们在事先就能明确知道某个参数是来源于哪个集合,那么直接访问那个集合,问题也就简单了。然而,更常见的数据来源通常只会是QueryString, Form ,而且尤其是当在客户端使用Jquery的$.ajax()这类技术时,可以很随意地将参数放到QueryString或者是Form中,那么,服务端通常为了也能灵活地应对这一现况,可以使用Request[]与Request.Params[] 这二种方式来访问这些来自于用户提交的数据。然而 Request[]与Request.Params[]有什么差别??
Request 实现方式
这段代码的意思是:Request根据指定的key,依次访问QueryString,Form,Cookies,ServerVariables这4个集合,如果在任意一个集合中找到了,就立即返回。
以下是Request["id" ]的内部实现代码:
public string this[string key]{get{string str =this.QueryString[key];if (str != null){return str;}str =this.Form[key];if (str != null){return str;}HttpCookiecookie = this.Cookies[key];if (cookie != null){returncookie.Value;}str =this.ServerVariables[key];if (str != null){return str;}returnnull;}}
Request.Params 的实现方式
它的实现方式是:Request.Params先判断_params这个Field成员是否为null,如果是,则创建一个集合,并把QueryString,Form,Cookies,ServerVariables这4个集合的数据全部填充进来,以后的查询都直接在这个集合中进行。
此刻睡觉的口水将变成明天流下的泪水。