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. 

当我尝试追加?action = Details或其他呃向URL注入动作参数的方法,我得到404错误。它看起来像期货代码中的WebEnabledApi属性发生了显着变化 - 任何其他人有这些问题,并有解决方案?

回答

1

默认路由基于“controller/action/id”,因为你只是传递了id而不是action,它会给你404错误。

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

我相信你正试图调用细节操作。

如果你有控制器上的作用,使用默认路由可能的工作:

MyController/Details/{MyItemId} 
相关问题