74

Request["key"]对比Request.Params["key"]对比Request.QueryString["key"]

您经验丰富的程序员使用哪种方法?为什么?

4

5 回答 5

122

我推荐Request.QueryString["key"]。查询字符串没有太大区别,Request["Key"]但如果您尝试从ServerVariables. 在if nullRequest["Key"]中查找一个值,然后查找,然后查找,最后查找。QueryStringFormCookieServerVariables

使用Params是最昂贵的。对 params 的第一个请求会创建一个新NameValueCollection的并将 、 和 中的每QueryString一个Form添加Cookie到此ServerVariables集合中。对于第二个请求,它的性能比Request["Key"].

话虽如此,几个键的性能差异可以忽略不计。这里的关键是代码应该显示意图,并且使用Request.QueryString可以清楚地表明您的意图是什么。

于 2010-02-22T18:06:54.407 回答
24

我更喜欢使用它,Request.QueryString["key"]因为它可以帮助代码阅读器准确地知道您从哪里获取数据。我倾向于不使用Request.Params["key"],因为它可以引用 cookie、查询字符串和其他一些东西;所以用户必须考虑一下。人们需要弄清楚你在想什么的时间越少,维护代码就越容易。

于 2010-02-22T17:53:30.150 回答
7

HttpRequest.ParamsRequest.Params从 httprequest 获取几乎所有内容(查询字符串、表单、cookie 和会话变量),而Request.Querystring只会拉取查询字符串……这一切都取决于您当时正在做什么。

于 2010-02-22T17:54:23.437 回答
5

我总是明确指定集合。如果出于某种原因您希望允许覆盖,请为每个“get”编码并编写一些清晰的代码,以显示您的层次结构以选择一个而不是另一个。IMO,我不喜欢在没有明确商业理由的情况下从多个来源获得价值。

于 2010-02-22T17:52:39.293 回答
1

温馨提示,如果您在 web.config 下设置requestValidationMode="4.5" , Request.QueryString[“key”]Request[“key”]都将使用“延迟加载”行为作为设计。

然而,不知何故Request.Params[“key”]仍然会作为 4.0 的行为触发验证。

这种奇怪的行为真的让我困惑了很长时间。

于 2017-06-06T05:58:58.797 回答