Request(“key”)和Request.Params(“key”)之间有什么区别吗?

时间:2011-09-02 15:59:55

标签: .net asp.net-mvc-3 httprequest

在ASP.NET MVC3应用程序中,我有一个看起来像这样的函数:

Public Sub DoSomething(controllerCtx As ControllerContext)
    ....

    ' Which to use? and Why?
    Dim val = controllerCtx.HttpContext.Request.Params.Item("someKey")
    Dim val = controllerCtx.HttpContext.Request.Item("someKey")

    ....
End Sub

我知道Item属于Default属性,可以删除,这与此问题无关。

查看Request.ItemParams.Item的MSDN页面,我没有看到任何差异。两个页面都说它们从以下值获取值:Cookie,Form,QueryString或ServerVariables集合。 (尽管他们确实以不同方式列出了订单。)

我见过this Stack Overflow post,但似乎答案主要集中在QueryString组件上,而不是Request.Params.Item vs Request.Item

为什么我会使用一个而不是另一个?这两者之间有什么区别吗?

1 个答案:

答案 0 :(得分:5)

这两者在内容上完全相同。这里是内容和搜索顺序:

  1. 查询字符串
  2. 表格
  3. 缓存
  4. ServerVariables
  5. 至于使用哪一个,在ASP.NET MVC应用程序中使用它会更好:

    controllerCtx.Controller.ValueProvider.GetValue("someKey");
    

    因为这也考虑了路由和自定义值提供程序(例如JsonValueProvider)。但当然一切都取决于您的情况和具体要求。