Asp.net mvc 3 我可以在ASP.NET MVC中将操作名称默认为路由中的控制器值吗?
我正在使用ASP.NET MVC3和areas…我希望有一个基本上是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 =
{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 }
);