zoukankan      html  css  js  c++  java
  • Request[]与Request.Params[] 差别

    Request[]与Request.Params[] ,这二个属性都可以让我们方便地根据一个KEY去【同时搜索】QueryString、Form、Cookies 或 ServerVariables这4个集合

    这二个属性唯一不同的是:Item是依次访问这4个集合,找到就返回结果,而Params是在访问时,先将4个集合的数据合并到一个新集合(集合不存在时创建), 然后再查找指定的结果。

    Request[]实现原理(.net源代码)

    // System.Web.HttpRequest
    /// <summary>Gets the specified object from the <see cref="P:System.Web.HttpRequest.QueryString" />, <see cref="P:System.Web.HttpRequest.Form" />, <see cref="P:System.Web.HttpRequest.Cookies" />, or <see cref="P:System.Web.HttpRequest.ServerVariables" /> collections.</summary>
    /// <returns>The <see cref="P:System.Web.HttpRequest.QueryString" />, <see cref="P:System.Web.HttpRequest.Form" />, <see cref="P:System.Web.HttpRequest.Cookies" />, or <see cref="P:System.Web.HttpRequest.ServerVariables" /> collection member specified in the <paramref name="key" /> parameter. If the specified <paramref name="key" /> is not found, then null is returned.</returns>
    /// <param name="key">The name of the collection member to get. </param>
    public string this[string key]
    {
        get
        {
            string text = this.QueryString[key];
            if (text != null)
            {
                return text;
            }
            text = this.Form[key];
            if (text != null)
            {
                return text;
            }
            HttpCookie httpCookie = this.Cookies[key];
            if (httpCookie != null)
            {
                return httpCookie.Value;
            }
            text = this.ServerVariables[key];
            if (text != null)
            {
                return text;
            }
            return null;
        }
    }

    Request.Params[]源码

    // System.Web.HttpRequest
    /// <summary>Gets a combined collection of <see cref="P:System.Web.HttpRequest.QueryString" />, <see cref="P:System.Web.HttpRequest.Form" />, <see cref="P:System.Web.HttpRequest.Cookies" />, and <see cref="P:System.Web.HttpRequest.ServerVariables" /> items.</summary>
    /// <returns>A <see cref="T:System.Collections.Specialized.NameValueCollection" /> object. </returns>
    public NameValueCollection Params
    {
        get
        {
            if (HttpRuntime.HasAspNetHostingPermission(AspNetHostingPermissionLevel.Low))
            {
                return this.GetParams();
            }
            return this.GetParamsWithDemand();
        }
    }
    // System.Web.HttpRequest
    private NameValueCollection GetParams()
    {
        if (this._params == null)
        {
            this._params = new HttpValueCollection(64);
            this.FillInParamsCollection();
            this._params.MakeReadOnly();
        }
        return this._params;
    }
    // System.Web.HttpRequest
    private void FillInParamsCollection()
    {
        this._params.Add(this.QueryString);
        this._params.Add(this.Form);
        this._params.Add(this.Cookies);
        this._params.Add(this.ServerVariables);
    }

     参考网页http://www.cnblogs.com/fish-li/archive/2011/12/06/2278463.html

  • 相关阅读:
    hdu 1240 Asteroids!
    hdu 1253 胜利大逃亡
    hdu 1035 Robot Motion
    hdu 1181 变形课
    hdu 1548 A strange lift
    DFS Sum It Up
    hdu 3278 Catch That Cow
    hdu 1312 Red and Black
    ACM菜鸟
    eclipse新建安卓项目点击finish后窗口无法关闭
  • 原文地址:https://www.cnblogs.com/imust2008/p/5407842.html
Copyright © 2011-2022 走看看