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; } }
|