Request.Item
定义:
从 QueryString、Form、Cookies 或 ServerVariables 集合获取指定的对象
语法:
public string this[
string key
] { get; }
Request.Params
定义:
获取 QueryString、Form、Cookies 和 ServerVariables 项的组合集合
语法:
public NameValueCollection Params { get; }
Reqeust["key"]或Request.Params["key"]
两者都是以指定key搜索Request.QueryString、Request.Form、Request.Cookies 和 Request.ServerVariables这4个集合,这让我们可以以方便的形式访问参数值,而不必去区分它来自GET还是POST
注:QueryString、Form、ServerVariables是NameValueCollection类型的,允许同名key,即一个键下存储多个字符串值,Cookies的HttpCookieCollection类型的,其基类是NameObjectCollectionBase,不允许同名key
不同的地方在于Item是依次访问4个集,找到就返回结果,而Params是在访问时,先将4个集合的数据合并到一个新集合(集合不存在时创建),然后再查找指定的结果。这至少意味两点,一是开销,Params会创建新的合并集合,二是存在跨集合的同名key的情况下(比如QueryString和Form有相同名称的key),Reqeust["key"]和Request.Params["key"]的返回结果会不同
至于Request[]、Request.Params[]该用哪一个,仁者见仁,智者见智了
HttpRequest.Item 属性
http://msdn.microsoft.com/zh-cn/library/system.web.httprequest.item(v=vs.110).aspx
HttpRequest.Params 属性
http://msdn.microsoft.com/zh-cn/library/system.web.httprequest.params(v=vs.100).aspx
NameValueCollection 类
http://msdn.microsoft.com/zh-cn/library/system.collections.specialized.namevaluecollection.aspx
细说 Request[]与Request.Params[]
http://www.cnblogs.com/fish-li/archive/2011/12/06/2278463.html