ASP.NET MVC 3 RESTful Routing: RouteData должен содержать элемент с именем Action?
Мы используем проект ASP.NET MVC Futures (Microsoft.Web.Mvc), чтобы приложение MVC 3 могло использовать маршруты RESTful. Это приложение отлично работает под MVC 1 и связанной с ним сборкой System.Web.Mvc.Resources.dll для той же функциональности.
Мы регистрируем маршруты как таковые:
routes.MapResourceRoute("MyController", "{MyItemId}");
Который должен дать нам маршруты как:
/MyController
/MyController/{MyItemId}
/MyController/{MyItemId}/EditForm
/MyController/CreateForm
Мы получаем три из четырех допустимых маршрутов - второй в этом списке (/MyController/{MyItemId}) возвращает ошибку:
Server Error in '/' Application.
The RouteData must contain an item named 'action' with a non-empty string value.
Когда я пытаюсь добавить? Action=Details или другие способы вставки параметра action в URL, я получаю 404 ошибки. Похоже, что атрибут WebEnabledApi в коде Futures значительно изменился - у кого-нибудь еще есть эти проблемы и есть решение?
1 ответ
Маршрут по умолчанию основан на "controller/action/id", так как вы просто передаете id, а не действие, это даст вам 404 ошибку.
routes.MapRoute("Default", "{controller}/{action}/{id}",
new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
});
Я полагаю, вы пытаетесь назвать детали действий.
Если у вас есть действие на контроллере, использование маршрута по умолчанию может работать:
MyController/Details/{MyItemId}