2011-02-09 56 views
3

當從ASP.NET中的代碼隱藏中訪問表單或查詢字符串值時,什麼是使用的利弊,說:ASP.NET:使用Request [「param」]與使用Request.QueryString [「param」]或Request.Form [「param」]

// short way 
string p = Request["param"]; 

代替:

// long way 
string p = Request.QueryString["param"]; // if it's in the query string or 
string p = Request.Form["param"];  // for posted form values 

我想過很多次,並拿出:

短道:

  • 較短(更易讀,便於新手要記住,等)

長征路:

  • 沒有問題,如果有與同一個表單值和查詢字符串值名稱(雖然通常不是問題)
  • 稍後有人閱讀代碼知道是否查看URL或表單元素以查找數據源(可能是最重要的一點)

那麼,每種方法還有哪些其他優點/缺點?

回答

4

長的方式,更因爲:

  • 這使得它更容易(後來讀碼時)找到當值從來(提高可讀性)

  • 這是稍快(雖然這通常不重要,只適用於第一次訪問)

在ASP.NET(以及PHP中的等價概念)中,我總是使用你稱之爲「長形式」的東西。我是這樣做的,我想從我的輸入值的來源確切地知道原則,以便我確保他們以我期望的方式得到我的應用程序。所以,這是爲了輸入驗證和安全性,我更喜歡更長的路。另外,正如你所建議的那樣,我認爲可維護性值得一些額外的擊鍵。

9

帕拉姆收集包括所有(4)類別:

  1. 查詢字符串參數
  2. 表單域
  3. 餅乾
  4. 服務器變量

你可以辯論說搜索在合併後的收藏中比查找特定的要慢,但是可以忽略不計差異

+3

+1唯一的性能差異是第一次訪問`Params`時,它需要從其他集合構建。 `NameValueCollection`使用`Hashset`來存儲值,所以無論大小如何,訪問都很快。 – Vadim 2011-02-09 03:25:39