[英]Request["key"] vs Request.Params["key"] vs Request.QueryString["key"]
Request["key"]
vs Request.Params["key"]
vs Request.QueryString["key"]
您經驗豐富的程序員使用哪種方法? 為什么?
我推薦Request.QueryString["key"]
。 查詢字符串與Request["Key"]
的區別不大,但是如果您嘗試從ServerVariables
獲取值,則有ServerVariables
。 Request["Key"]
在QueryString
查找一個值(如果為null),它查找Form
,然后是Cookie
,最后是ServerVariables
。
使用Params
是最昂貴的。 對參數的第一個請求將創建一個新的NameValueCollection
,並將每個QueryString
, Form
, Cookie
和ServerVariables
添加到此集合。 對於第二個請求,它的性能要比Request["Key"]
更高。
話雖這么說,幾個鍵的性能差異可以忽略不計。 此處的關鍵是代碼應顯示意圖,並使用Request.QueryString
可以清楚您的意圖是什么。
我更喜歡使用Request.QueryString["key"]
因為它可以幫助代碼閱讀器准確地知道從何處獲取數據。 我傾向於不使用Request.Params["key"]
因為它可以引用Cookie,查詢字符串和其他一些東西; 所以用戶必須三思。 別人花更少的時間弄清楚您的想法,維護代碼就越容易。
HttpRequest.Params
或Request.Params
可以從httprequest獲取幾乎所有內容(查詢字符串,表單,cookie和會話變量),而Request.Querystring
僅會提取查詢字符串...取決於您當時的工作。
我總是明確指定集合。 如果出於某種原因要允許覆蓋,請為每個獲取代碼進行“ get”編碼,並編寫一些清晰的代碼來顯示您的層次結構以選擇一個。 IMO,我不喜歡在沒有明確商業理由的情況下從多個來源獲得價值。
請注意,如果在web.config下設置requestValidationMode =“ 4.5” ,則Request.QueryString [“ key”]和Request [“ key”]都將使用“延遲加載”行為作為設計。
但是,以某種方式, Request.Params [“ key”]仍將觸發驗證,其行為是4.0。
這種奇怪的行為使我很困惑了很長時間。
總是發現使用 request.querystring 來定位 url 參數更有用,它省去了嘗試追蹤它可以從其他不同位置獲取的其他值的麻煩。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.