Model view controller 自定义路由-从URL中删除控制器和操作

Model view controller 自定义路由-从URL中删除控制器和操作,model-view-controller,routing,url-routing,Model View Controller,Routing,Url Routing,在不干扰默认路由的url的情况下删除控制器和操作是否存在问题? 例如: 发件人: 其中departments=控制器,action=产品和鞋类,male=参数 致: 因此,我以一个自定义路由的控制器和操作为例: routes.MapRoute ( "Products", "{p0}/{p1}/{p2}/{p3}/{p4}/{p5}", new {

在不干扰默认路由的url的情况下删除控制器和操作是否存在问题? 例如:

发件人: 其中departments=控制器,action=产品和鞋类,male=参数

致:

因此,我以一个自定义路由的控制器和操作为例:

        routes.MapRoute
        (
            "Products",
            "{p0}/{p1}/{p2}/{p3}/{p4}/{p5}",
            new
            {
                controller = "Departaments",
                action = "Products",
                p0 = "",
                p1 = "",
                p2 = "",
                p3 = "",
                p4 = "",
                p5 = ""
            },
            new String[]
            {
                "MvcApplication1.Controllers"
            }
        );


        routes.MapRoute
        (
            "Default",
            "{controller}/{action}/{p0}",
            new
            {
                controller = "Home",
                action = "Index",
                p0 = ""
            },
            new String[]
            {
                "MvcApplication1.Controllers"
            }
        );

您必须在默认路由之后添加Products路由,否则Products路由将始终匹配六个段或更少的URL。这可能会带来一个新问题,默认路由将匹配三个或更少段的任何URL,除非您使用所有控制器名称向控制器令牌添加约束,例如控制器=@home | account | departments。该库可以使用控制器和操作的约束自动注册非常严格的路由,然后您还可以添加自己的路由,而不必担心冲突


你有这种实现的例子吗?
routes.MapRoute("Default", "{controller}/{action}/{p0}",
   new { controller = "Home", Action = "Index", p0 = "" },
   new { controller = @"Home|Account" }, // Register controllers here
   new[] { "MvcApplication1.Controllers" });

routes.MapRoute("Products", "{p0}/{p1}/{p2}/{p3}/{p4}/{p5}",
   new { controller = "Departaments", Action = "Products", p0 = "", p1 = "", p2 = "", p3 = "", p4 = "", p5 = "" },
   new[] { "MvcApplication1.Controllers" });