6

我们正在使用 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 错误。看起来,Futures 代码中的 WebEnabledApi 属性发生了显着变化——还有其他人遇到这些问题并有解决方案吗?

4

1 回答 1

2

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

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

我相信您正在尝试调用详细信息操作。

如果您确实对控制器进行了操作,则使用默认路由可能会起作用:

MyController/Details/{MyItemId}
于 2013-08-19T19:24:46.670 回答