2011-09-02 32 views
2

在ASP.NET MVC3应用程序,我有一个看起来像一个功能:Request(“key”)和Request.Params(“key”)之间是否有区别?

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组件moreso比Request.Params.Item VS Request.Item的答案。

为什么我会用另一个呢?两者之间有什么区别吗?

回答

5

这两者在内容方面是严格等效的。而这里的内容和它的搜索顺序:

  1. 查询字符串
  2. 形式
  3. 饼干
  4. ServerVariables

至于用哪一个,那么,在ASP.NET MVC应用程序它会更好地使用:

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

,因为这考虑到路由和自定义值提供程序(例如JsonValueProvider)。但是,当然,一切都将取决于您的方案和具体要求。

+0

感谢您的明确答案。 – ckittel

相关问题