请求与Request.Params 对比Request.QueryString

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

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

我build议Request.QueryString["key"]Request["Key"]与查询string没有多大区别,但是如果您尝试从ServerVariables获取值,则ServerVariablesRequest["Key"]QueryString查找一个值,如果为null,则查看Form ,然后是Cookie ,最后是ServerVariables

使用Params是最昂贵的。 params的第一个请求创build一个新的NameValueCollection ,并将QueryStringFormCookieServerVariables每一个添加到这个集合中。 对于第二个请求比Request["Key"]更高性能。

说了几个键的性能差异是相当可以忽略的。 这里的关键是代码应该显示意图,并使用Request.QueryString明确你的意图是什么。

我更喜欢使用Request.QueryString["key"]因为它有助于代码阅读器确切地知道从哪里获取数据。 我倾向于不使用Request.Params["key"]因为它可以引用cookie,查询string和其他一些东西; 所以用户不得不想一点。 人们需要花费更less的时间来弄清楚你在想什么,维护代码就越容易。

HttpRequest.ParamsRequest.Params从httprequest获取几乎所有的东西(查询string,表单,cookie和会话variables),而Request.Querystring只能提取查询string…所有这一切都取决于你在做什么。

我总是明确指定收集。 如果由于某种原因,你想允许覆盖,编码为每个“获取”,并写一些清晰的代码,显示您的层次结构select一个在另一个。 海事组织,我不喜欢从多个来源获得价值,没有明确的商业原因这样做。

如果您在web.config中设置requestValidationMode =“4.5”Request.QueryString [“key”]Request [“key”]将使用“延迟加载”行为作为devise。

但是,不知何故, Request.Params [“key”]仍然会触发validation为4.0的行为。

这种奇怪的行为真的使我困惑很久。