Asp.net mvc 3 我可以在ASP.NET MVC中将操作名称默认为路由中的控制器值吗?

Asp.net mvc 3 我可以在ASP.NET MVC中将操作名称默认为路由中的控制器值吗?,asp.net-mvc-3,asp.net-mvc-routing,Asp.net Mvc 3,Asp.net Mvc Routing,我正在使用ASP.NET MVC3和areas…我希望有一个基本上是{area}/{controller}/{id}的路由结构,并使操作等于{controller}值。我想这样做是为了模拟所描述的动作控制器模式,但使用的是MVC3开箱即用 基本上,如果这能起作用(但事实并非如此),那就太好了: 您可以编写自己的路由,或者简单地将类似的内容放入全局。asax: protected void Application_AcquireRequestState() { var handler =

我正在使用ASP.NET MVC3和areas…我希望有一个基本上是
{area}/{controller}/{id}
的路由结构,并使操作等于
{controller}
值。我想这样做是为了模拟所描述的动作控制器模式,但使用的是MVC3开箱即用

基本上,如果这能起作用(但事实并非如此),那就太好了:


您可以编写自己的
路由
,或者简单地将类似的内容放入
全局。asax

protected void Application_AcquireRequestState()
{
    var handler = Context.Handler as MvcHandler;

    if (handler == null)
        return;

    var routeData = handler.RequestContext.RouteData;

    var action = routeData.Values["action"];
    if (action == null)
        routeData.Values["action"] = routeData.GetRequiredString("controller");
}
并绘制如下路线图:

context.MapRoute(
    "Request_Default",
    "Request/{controller}/{id}",
    new { id = UrlParameter.Optional }
);
context.MapRoute(
    "Request_Default",
    "Request/{controller}/{id}",
    new { id = UrlParameter.Optional }
);