Как получить строковые переменные запроса в запросе MVC 4?

Я хохочу здесь, работая над моим первым проектом MVC 4 с разнообразием Web Api.

В MVC 3 я мог бы получить параметр строки запроса, например:

var unicornName = Request.Query["unicornName"];

Но в MVC 4 похоже, что запрос перешел от HttpRequestBase в HttpRequestMessage, а параметр запроса больше. Итак, хм, хорошо, как мне их получить сейчас. Я нашел пару примеров в Интернете, но они абсурдны.

Этот коллега рекомендует разделять строку запроса RequestUri на "&" и найти ваш парам и пару. И этот пример показывает вызов метода GetQueryNameValuePairs в новом объекте запроса, который возвращает список пар значений ключа, а затем делает некоторые linq, чтобы найти ваш ключ и значение. На самом деле это не может быть так просто, чтобы получить что-то такое простое. Пожалуйста, скажите мне, что я что-то пропустил!

Примечание. Я могу понять, что это идет по пути привязки к модели, и я должен приводить параметры строки запроса с помощью параметров метода действия, но еще есть моменты, когда переменные строки запроса нужно выщипывать (легко?) из запроса, например, в фильтре.

Ответ 1

Я думаю, что это может быть то, что вы ищете,

  var queryValues = Request.RequestUri.ParseQueryString();

fooobar.com/questions/534390/...

Ответ 2

Если linq действительно так хлопотно, просто заверните результат своего GetQueryNameValuePairs() в словаре:

var requestQuery = 
    list.ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value);

Затем вы можете получить свой строковый параметр так же, как и всегда:

var unicornName = requestQuery["unicornName"];