ASP.NET MVC 3 RESTful Routing: RouteData должен содержать элемент с именем Action? - PullRequest
6 голосов
/ 26 января 2011

Мы используем проект 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 или другие способы добавления параметра действия в URL, я получаю 404 ошибки.Похоже, что атрибут WebEnabledApi в коде Futures значительно изменился - у кого-нибудь еще есть эти проблемы и есть решение?

1 Ответ

1 голос
/ 19 августа 2013

Маршрут по умолчанию основан на "controller / action / id", так как вы просто передаете id, а не действие, это даст вам ошибку 404.

routes.MapRoute("Default", "{controller}/{action}/{id}",
            new
            {
                controller = "Home",
                action = "Index",
                id = UrlParameter.Optional
            });

Я полагаю, вы пытаетесь вызвать действие детализации.

Если у вас есть действие на контроллере, использование маршрута по умолчанию может работать:

MyController/Details/{MyItemId}
...