ASP.NET:使用Request[“param”与使用Request.QueryString[“param”或Request.Form[“param”相比
从ASP.NET中的代码隐藏中访问表单或查询字符串值时,使用的优缺点是什么,例如:ASP.NET:使用Request[“param”与使用Request.QueryString[“param”或Request.Form[“param”相比,asp.net,request,request.querystring,request.form,Asp.net,Request,Request.querystring,Request.form,从ASP.NET中的代码隐藏中访问表单或查询字符串值时,使用的优缺点是什么,例如: // 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 我已经考虑
// 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中的等效概念)中,我总是使用您所谓的“长格式”。我这样做是出于这样一个原则,即我希望确切地知道输入值的来源,以便确保它们以我期望的方式到达我的应用程序。因此,为了输入验证和安全性,我更喜欢较长的方法。另外,正如您所建议的,我认为可维护性值得多敲几下键盘。+1唯一的性能差异是,第一次访问
Params
时,需要从其他集合构建它NameValueCollection
使用一个Hashset
来存储值,因此无论大小,访问都是快速的。我有时故意只设置请求[“param”]
。我这样做是为了在指向此页面的其他页面中同时使用POST和GET,但它们的用途相同(例如,与OAuth一起使用的returnUrl)。当然,我不认为这是因为懒惰而默认的。