ASP.NET中`Request.Form["key"]`與`Request["key"]`常被混用,實際有明確區別。本文釐清差異並給出選擇建議。
| 屬性 | Request.Form["key"] | Request["key"] |
|---|---|---|
| 搜索範圍 | **僅**表單數據(POST body,`application/x-www-form-urlencoded` / `multipart/form-data`) | **依次**搜索:QueryString → Form → Cookies → ServerVariables |
| 性能 | 快(直接定位集合) | 較慢(多集合順序查找) |
| 意圖明確性 | 高(明確表單提交) | 低(隱式來源,易誤讀) |
| 同名鍵衝突 | 無(單一來源) | 按搜索順序返回首個匹配,可能非預期值 |
單次調用差異微乎其微(納秒級),高併發下顯式集合訪問可減少集合遍歷開銷。更大的性能增益來自:
// 推薦:顯式來源 + 空值處理
string userId = Request.Form["userId"] ?? Request.QueryString["userId"];
// 或 MVC 模型綁定
public ActionResult Login(LoginViewModel model) { ... }
原則:顯式優於隱式,性能與可維護性雙贏。