Есть ли разница между Request («ключ») и Request.Params («ключ»)? - PullRequest
2 голосов
/ 02 сентября 2011

В приложении 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 в обоих и может бытьудалены, это не имеет отношения к этому вопросу. )

Просматривая страницы MSDN для Request.Item и Params.Item, я не вижуникаких отличий.На обеих страницах написано, что они получают значения из коллекций Cookies, Form, QueryString или ServerVariables.(хотя они перечисляют заказы по-разному.)

Я видел это сообщение о переполнении стека , но, похоже, ответы были сосредоточены на компоненте QueryString больше, чем на Request.Params.Item противRequest.Item.

Зачем мне использовать один поверх другого?Есть ли какая-то разница между этими двумя?

1 Ответ

5 голосов
/ 02 сентября 2011

Два строго эквивалентны по содержанию. А вот содержимое и порядок, в котором производится поиск:

  1. QueryString
  2. Форма
  3. Печенье
  4. ServerVariables

Что касается того, что использовать, ну, в приложении ASP.NET MVC было бы лучше использовать:

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

, поскольку при этом учитываются маршруты и поставщики пользовательских значений (такие как, например, JsonValueProvider). Но, конечно, все будет зависеть от вашего сценария и конкретных требований.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...