Request.Form 和 Request.QueryString

原文链接

request会按顺序搜索全部的集合—QueryString、Form、Cookies、ClientCertificate、ServerVarible直到发现第一个匹配值的名称,这样做的集合效率低,并且是不安全的。
request包含各种方式的值,没有指名是什麽,Request.Form()、Request.QueryString()等都包含在裏面,但是它们之间有个优先级问题,一般应该是get比post优先级高些。
request.form是post传递方式  
request.querystring是set传递方式
 
比如:
<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.Form("id")一定得到的是以post提交的input裏输入的值,而用Request.QueryString("id")得到的一定是以get方式提交的值,所以要养成好习惯都写全,不要都用Request(),除非我们能够确认只有一个不会有重复。
            string start_time = FormOrRequestKey("start_time");
            string end_time = FormOrRequestKey("end_time");

        /// <summary>  
        /// 获取参数  
        /// </summary>   
        /// <param name="FormString">表示key</param>
        /// <returns></returns> 
        public string FormOrRequestKey(string FormString)
        {
            var queryString = Request.QueryString;
            var formValue = Request.Form;
            if (!string.IsNullOrEmpty(formValue[FormString] ))
            {
                return formValue[FormString];
            }
            if (!string.IsNullOrEmpty(queryString[FormString]))
            {
                return queryString[FormString];
            }
            return string.Empty;
        }







































你可能感兴趣的:(Request.Form 和 Request.QueryString)