簡體   English   中英

Request["key"] vs Request.Params["key"] vs Request.QueryString["key"]

[英]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 ,並將每個QueryStringFormCookieServerVariables添加到此集合。 對於第二個請求,它的性能要比Request["Key"]更高。

話雖這么說,幾個鍵的性能差異可以忽略不計。 此處的關鍵是代碼應顯示意圖,並使用Request.QueryString可以清楚您的意圖是什么。

我更喜歡使用Request.QueryString["key"]因為它可以幫助代碼閱讀器准確地知道從何處獲取數據。 我傾向於不使用Request.Params["key"]因為它可以引用Cookie,查詢字符串和其他一些東西; 所以用戶必須三思。 別人花更少的時間弄清楚您的想法,維護代碼就越容易。

HttpRequest.ParamsRequest.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM