request("id")與request.querystring("id")的區別


request("id")與request.querystring("id")的區別






Request從幾個集合取數據是有順序的,從前到后的順序依次是
QueryString,Form,最后是ServerVariables。Request對象按照這樣的順序依次搜索這幾個集合中的變量,如果有符合的就中止,后面的就不管了。


  現在我們來分析下你得問題.
  假設有個頁面  test.asp?id=111
 
這里我們的頁面是用GET的方法.這時用request.querystring("id")與request("id")是一樣得,應該如果不指定REQUEST得集合,首先就會從Querystring搜索.
 

  
而如果我們的頁面是用的是POST的方法發送數據給test.asp,那么用request.querystring("id")是不行的了(他只能取GET),而要用request.from("id"),而如果還用request("id")他也能取到數據,但先檢測QUERYSTRING的值,顯然速度就慢了.

下面是個檢測的例子你可以看看:
<%
If
Request("submit")<>"" then
Response.Write "直接取:"&
Request("username") & "<br>"
Response.Write "取Get:" &
Request.QueryString("username") & "<br>"
Response.Write "取Post:"
& Request.Form("username") & "<br>"
End if
%>
<form
name=form1 action="" method=post>
<input type=test name="username"
value="postuser">
<input type=submit name="submit"
value="test">
</form>

養成好的習慣,記得在request后面加上集合的名字


——————————————————————————————————————————————————


Request.QueryString["id"]
只能讀取通過地址欄參數傳遞過來的名為id的參數。
Request["id"]是一個復合功能讀取函數。
它的優先級順序為
QueryString
> Form > Cookies > ServerVariables

也就是說,如果存在名為id的地址欄參數,Request[
"id" ] 的效果和 Request.QueryString["id"]
是樣的。
如果不存在名為id的地址欄參數,Request.QueryString["id"]將會返回空,但是Request[ "id"
]會繼續檢查是否存在名為id的表單提交元素,如果不存在,則繼續嘗試檢查名為id的Cookie,如果不存在,繼續檢查名為id的服務器環境變量。它將最多做出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;
            }
            HttpCookie
cookie = this.Cookies[key];
            if (cookie != null)
           
{
                return cookie.Value;
            }
            str =
this.ServerVariables[key];
            if (str != null)
           
{
                return str;
            }
            return
null;
        }
    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM