Asp.net mvc 4 ASP.NET MVC4路由-使用不同的路由访问具有相同名称的控制器和操作

Asp.net mvc 4 ASP.NET MVC4路由-使用不同的路由访问具有相同名称的控制器和操作,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc 4,Asp.net Mvc Routing,使用ASP.NET MVC4路由: 如果我想为站点的主要部分设置默认路由配置: routes.MapRoute( name: "Default", url: "{controller}/{action}/{id}", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } ); 然

使用ASP.NET MVC4路由:

如果我想为站点的主要部分设置默认路由配置:

        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
        );
然后是另一个路由配置,类似于以下内容:

        routes.MapRoute(
            name: "FOO",
            url: "FOO/{controller}/{action}/{id}",
            defaults: new { controller = "FOO", action = "bar", id = UrlParameter.Optional }
        );
注意url中的字符串“FOO/”(就在
/{controller…

例如,我希望能够使用如下url访问我网站的主要部分

http://dummyurl.com/bar/1

routes.MapRoute(
    name: "FOO",
    url: "FOO/{controller}/{action}/{id}",
    defaults: new { controller = "FOO", action = "bar", id = UrlParameter.Optional }
);
但如果我要使用的话,访问具有相同名称的控制器和操作

http://dummyurl.com/**FOO**/bar/1

routes.MapRoute(
    name: "FOO",
    url: "FOO/{controller}/{action}/{id}",
    defaults: new { controller = "FOO", action = "bar", id = UrlParameter.Optional }
);

除非您有一个名为
FOO
的mvc区域,否则该路由将导致您可能无法预料的结果http://yourdomain/foo/foo/any_method_in_foo/id

通过仔细阅读,我发现我只需要:

    routes.MapRoute(
        name: "FOO",
        url: "FOO/{controller}/{action}/{id}",
        defaults: new { controller = "FOO", action = "bar", id = UrlParameter.Optional }
    );
以上:

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

在我的
Routes.config
和blammo中,很好。我现在可以分离并访问项目中的管理(“FOO”)部分。

区域无疑是更好的解决方案。