【问题标题】:Custom Routing - Remove Controller and Action From URL自定义路由 - 从 URL 中删除控制器和操作
【发布时间】:2011-06-26 15:03:56
【问题描述】:

当我删除控制器和操作时,不会干扰默认路由的 url? 例如:

来自: http://mysite.com/departaments/products/footwear/male 其中部门 = 控制器,操作 = 产品和鞋类,男性 = 参数

到: http://mysite.com/footwear/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"
            }
        );

【问题讨论】:

    标签: model-view-controller routing url-routing


    【解决方案1】:

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


    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" });
    

    【讨论】:

    • 你有这个实现的例子吗?
    猜你喜欢
    • 2012-11-17
    • 2011-12-03
    • 2018-09-14
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多