Request["key"]
对比Request.Params["key"]
对比Request.QueryString["key"]
您经验丰富的程序员使用哪种方法?为什么?
Request["key"]
对比Request.Params["key"]
对比Request.QueryString["key"]
您经验丰富的程序员使用哪种方法?为什么?
我推荐Request.QueryString["key"]
。查询字符串没有太大区别,Request["Key"]
但如果您尝试从ServerVariables
. 在if nullRequest["Key"]
中查找一个值,然后查找,然后查找,最后查找。QueryString
Form
Cookie
ServerVariables
使用Params
是最昂贵的。对 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 的行为触发验证。
这种奇怪的行为真的让我困惑了很长时间。