Я использую бета-версию ASP.NET MVC 4 с веб-API, хотя я считаю, что реализация маршрутизации не имеет существенных отличий от .NET 4.0, относящихся к этому вопросу. MapHttpRoute
, используемый в коде ниже, поставляется с MVC 4 и является методом расширения, который по существу выполняет ту же функцию, что и MapRoute, но для контроллеров WebApi.Маршрут ASP.NET с фиксированным параметром URI, не сопоставляющим параметры querystring
У меня есть старый метод serivce, для которого я хочу создать маршрут ASP.NET. Метод в настоящее время имеет следующие подписи:
NewsItemList ListNewsItems(string category, int maxResults)
Он должен быть сопоставлен по запросам, чьи идентификаторы URI выглядеть следующим образом:
~/news?category=finance&maxResults=50
Ни, один или оба запроса строковые параметры могут присутствовать.
Я изо всех сил пытаюсь найти способ определения маршрута для поддержки этого метода.
Я использовал MapHttpRoute
, чтобы зарегистрировать маршрут и установить значения по умолчанию для контроллера и значения действия для контроллера и метода соответствующим образом. Вот некоторые шаблоны я попытался с результатами:
"news"
захватывает"~/news"
и связывается с методом правильно, но не будет ничего с строки запроса захвата."news{*query}
не разрешено, потому что вы не можете иметь улов-все, если это не является исключительно этапа заседаний Uri"news{query}"
захватывает строку запроса, но не привязка к методу
I» m ищет путь вперед, который не слишком радикальный, поскольку это крайний случай в приложении. Решение должно соответствовать многим другим существующим маршрутам. В идеале я бы хотел избежать того, чтобы идти по пути переписывания Uri.