ASP.NET:使用Request[“param”与使用Request.QueryString[“param”或Request.Form[“param”相比

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 我已经考虑

从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
我已经考虑了很多次,并得出:

近路:

  • 更短(可读性更强,新手更容易记住等)
路途遥远:

  • 如果存在同名的表单值和查询字符串值,则不会出现问题(尽管这通常不是问题)
  • 稍后阅读代码的人知道是查找URL还是表单元素以查找数据源(可能是最重要的一点)


那么每种方法还有哪些优点/缺点?

参数集合包括所有(4)个集合:

  • 查询字符串参数
  • 表单字段
  • 饼干
  • 服务器变量

  • 您可以争辩说,在组合集合中搜索要比查找特定集合慢,但这是可以忽略不计的

    长距离搜索更好,因为:

    • 它使(稍后阅读代码时)更容易找到值的来源(提高可读性)

    • 它的速度略快(虽然这通常并不重要,只适用于首次访问)


    在ASP.NET(以及PHP中的等效概念)中,我总是使用您所谓的“长格式”。我这样做是出于这样一个原则,即我希望确切地知道输入值的来源,以便确保它们以我期望的方式到达我的应用程序。因此,为了输入验证和安全性,我更喜欢较长的方法。另外,正如您所建议的,我认为可维护性值得多敲几下键盘。

    +1唯一的性能差异是,第一次访问
    Params
    时,需要从其他集合构建它
    NameValueCollection
    使用一个
    Hashset
    来存储值,因此无论大小,访问都是快速的。我有时故意只设置
    请求[“param”]
    。我这样做是为了在指向此页面的其他页面中同时使用POST和GET,但它们的用途相同(例如,与OAuth一起使用的returnUrl)。当然,我不认为这是因为懒惰而默认的。