在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.Item
和Params.Item
的MSDN页面,我没有看到任何差异。两个页面都说它们从以下值获取值:Cookie,Form,QueryString或ServerVariables集合。 (尽管他们确实以不同方式列出了订单。)
我见过this Stack Overflow post,但似乎答案主要集中在QueryString
组件上,而不是Request.Params.Item
vs Request.Item
。
为什么我会使用一个而不是另一个?这两者之间有什么区别吗?
答案 0 :(得分:5)
这两者在内容上完全相同。这里是内容和搜索顺序:
至于使用哪一个,在ASP.NET MVC应用程序中使用它会更好:
controllerCtx.Controller.ValueProvider.GetValue("someKey");
因为这也考虑了路由和自定义值提供程序(例如JsonValueProvider)。但当然一切都取决于您的情况和具体要求。