【问题标题】:ASP.NET MVC 3 RESTful Routing: RouteData must contain an item named Action?ASP.NET MVC 3 RESTful 路由:RouteData 必须包含名为 Action? 的项
【发布时间】:2011-01-26 20:17:05
【问题描述】:

我们正在使用 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 属性发生了显着变化 - 还有其他人遇到这些问题并有解决方案吗?

【问题讨论】:

    标签: asp.net asp.net-mvc asp.net-mvc-routing asp.net-mvc-futures


    【解决方案1】:

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

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

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

    如果你在控制器上有一个动作,使用默认路由可能会起作用:

    MyController/Details/{MyItemId}
    

    【讨论】:

      猜你喜欢
      • 2016-07-13
      • 1970-01-01
      • 2012-06-14
      • 2019-11-22
      • 1970-01-01
      • 2011-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多