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}
Другие вопросы по тегам