Ответ 1
Я думаю, что это может быть то, что вы ищете,
var queryValues = Request.RequestUri.ParseQueryString();
Я хохочу здесь, работая над моим первым проектом MVC 4 с разнообразием Web Api.
В MVC 3 я мог бы получить параметр строки запроса, например:
var unicornName = Request.Query["unicornName"];
Но в MVC 4 похоже, что запрос перешел от HttpRequestBase
в HttpRequestMessage
, а параметр запроса больше. Итак, хм, хорошо, как мне их получить сейчас. Я нашел пару примеров в Интернете, но они абсурдны.
Этот коллега рекомендует разделять строку запроса RequestUri на "&" и найти ваш парам и пару. И этот пример показывает вызов метода GetQueryNameValuePairs
в новом объекте запроса, который возвращает список пар значений ключа, а затем делает некоторые linq, чтобы найти ваш ключ и значение. На самом деле это не может быть так просто, чтобы получить что-то такое простое. Пожалуйста, скажите мне, что я что-то пропустил!
Примечание. Я могу понять, что это идет по пути привязки к модели, и я должен приводить параметры строки запроса с помощью параметров метода действия, но еще есть моменты, когда переменные строки запроса нужно выщипывать (легко?) из запроса, например, в фильтре.
Я думаю, что это может быть то, что вы ищете,
var queryValues = Request.RequestUri.ParseQueryString();
Если linq действительно так хлопотно, просто заверните результат своего GetQueryNameValuePairs()
в словаре:
var requestQuery =
list.ToDictionary((keyItem) => keyItem.Key, (valueItem) => valueItem.Value);
Затем вы можете получить свой строковый параметр так же, как и всегда:
var unicornName = requestQuery["unicornName"];