Asp.net mvc 3 如何简化MVC3路由?

Asp.net mvc 3 如何简化MVC3路由?,asp.net-mvc-3,asp.net-mvc-routing,Asp.net Mvc 3,Asp.net Mvc Routing,我有以下路线。我想我可以简化它们,但我不知道如何简化。有人能给我一些建议吗?id=。。。在这些路线上。如果我的方法中没有任何id参数,那么这有什么作用吗 context.MapRoute( "Admin_test", "Admin/Tests", new { controller = "Contents", action = "Tests", id = UrlParameter.Optional } ); context.MapRoute( "Admin_menu

我有以下路线。我想我可以简化它们,但我不知道如何简化。有人能给我一些建议吗?id=。。。在这些路线上。如果我的方法中没有任何id参数,那么这有什么作用吗

context.MapRoute(
    "Admin_test",
    "Admin/Tests",
    new { controller = "Contents", action = "Tests", id = UrlParameter.Optional }
);
context.MapRoute(
    "Admin_menus",
    "Admin/Menus",
    new { controller = "Contents", action = "Menus", id = UrlParameter.Optional }
);
context.MapRoute(
    "Admin_notes",
    "Admin/Pages",
    new { controller = "Contents", action = "Pages", id = UrlParameter.Optional }
);
context.MapRoute(
    "Admin_cores",
    "Admin/Cores",
    new { controller = "Cores", action = "Cores", id = UrlParameter.Optional }
);
context.MapRoute(
    "Admin_default3",
    "Admin/References",
    new { controller = "References", action = "References", id =     UrlParameter.Optional }
);
然后在
核心
引用
控制器上使用稍微多一些RESTful操作命名约定,并使用
索引
作为默认操作,而不是
核心
引用

但在第二个路由定义中,您可能还希望允许用户在url中指定不同的操作:

context.MapRoute(
    "Admin_Default",
    "Admin/{controller}/{action}",
    new { action = "Index" }
);
然后在
核心
引用
控制器上使用稍微多一些RESTful操作命名约定,并使用
索引
作为默认操作,而不是
核心
引用

但在第二个路由定义中,您可能还希望允许用户在url中指定不同的操作:

context.MapRoute(
    "Admin_Default",
    "Admin/{controller}/{action}",
    new { action = "Index" }
);

非常感谢你。我不知道有可能与|是的,有可能。路由定义的这一部分称为路由约束:。您可以使用一个内置路由约束(Regex、HTTP谓词)或编写一个完全自定义的约束。将拾取与url匹配的第一条路由,并将其路由到正确的操作和控制器。所以www.yoursite.com/将匹配第一条路线,并带您到Contents/tests非常感谢。我不知道有可能与|是的,有可能。路由定义的这一部分称为路由约束:。您可以使用一个内置路由约束(Regex、HTTP谓词)或编写一个完全自定义的约束。将拾取与url匹配的第一条路由,并将其路由到正确的操作和控制器。因此www.yoursite.com/将匹配第一条路线,并带您进入内容/测试