我正在使用ASP.NET MVC3和区域......我希望有一个基本上{area}/{controller}/{id}
的路由结构,并使动作等于{controller}
值。我想这样做来模仿here描述的动作控制器模式,但是开箱即用MVC3。
基本上,如果这样做会很好(但事实并非如此):
context.MapRoute(
"Request_Default",
"Request/{controller}/{id}",
new { action = "{controller}", id = UrlParameter.Optional }
);
答案 0 :(得分:2)
您可以编写自己的Route
,或者只是在global.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 }
);