请求与Request.Params 对比Request.QueryString
Request["key"]
与Request.Params["key"]
对比Request.QueryString["key"]
你经验丰富的程序员使用哪种方法? 为什么?
我build议Request.QueryString["key"]
。 Request["Key"]
与查询string没有多大区别,但是如果您尝试从ServerVariables
获取值,则ServerVariables
。 Request["Key"]
在QueryString
查找一个值,如果为null,则查看Form
,然后是Cookie
,最后是ServerVariables
。
使用Params
是最昂贵的。 params的第一个请求创build一个新的NameValueCollection
,并将QueryString
, Form
, Cookie
和ServerVariables
每一个添加到这个集合中。 对于第二个请求比Request["Key"]
更高性能。
说了几个键的性能差异是相当可以忽略的。 这里的关键是代码应该显示意图,并使用Request.QueryString
明确你的意图是什么。
我更喜欢使用Request.QueryString["key"]
因为它有助于代码阅读器确切地知道从哪里获取数据。 我倾向于不使用Request.Params["key"]
因为它可以引用cookie,查询string和其他一些东西; 所以用户不得不想一点。 人们需要花费更less的时间来弄清楚你在想什么,维护代码就越容易。
HttpRequest.Params
或Request.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的行为。
这种奇怪的行为真的使我困惑很久。
- 从Web.Config读取variables
- 由UpdatePanel中的GridView内部的LinkButton触发完全回发
- 使用Active Directory的.NET中的用户组和angular色pipe理
- 如何在ASP.NET中获取客户端date和时间?
- 如何lockingASP.NET MVC中的path?
- ASP.NET MVC – 设置自定义IIdentity或IPrincipal
- 如何使用SqlConnectionStringBuilder从连接string获取数据库名称
- 确认回传OnClientClickbuttonASP.NET
- 使用<optgroup>为asp.net(webforms)的下拉列表控件?