6

Мы используем проект ASP.NET MVC Futures (Microsoft.Web.Mvc), чтобы приложение MVC 3 использовало маршруты RESTful. Это приложение отлично работает в рамках MVC 1 и связанной с ним сборки System.Web.Mvc.Resources.dll для той же функциональности.ASP.NET MVC 3 RESTful Routing: RouteData должен содержать элемент с именем Action?

Мы регистрация маршрутов как таковые:

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. 

При попытке добавления действий = Детали или дру? er путем ввода параметра действия в URL-адрес, я получаю 404 ошибки. Похоже, что атрибут WebEnabledApi в коде Futures значительно изменился - кто-то еще имеет эти проблемы и имеет решение?

ответ

1

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

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

Я считаю, что вы пытаетесь вызвать действие с деталями.

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

MyController/Details/{MyItemId}