【问题标题】:.NET custom route overwrites normal.NET 自定义路由覆盖正常
【发布时间】:2014-02-17 18:04:56
【问题描述】:

这是我的自定义路线

// custom route
routes.MapRoute(
    "Custom",
    "Town/{townName}/{restaurantID}",
    new { controller = "Town", action = "View", restaurantID = UrlParameter.Optional }
);

问题是当我点击 Create 时,操作 URL 是(应该是)Town/Create,但网站将 Create 识别为 townName,这是问题...Edit 也发生了同样的事情。

谢谢。

【问题讨论】:

    标签: .net asp.net-mvc url routing routes


    【解决方案1】:

    不幸的是,您正在处理 2 条非常通用的路线。无论哪个先订购,都会有优先权,但任何订购都不会满足您的需求。解决此问题的最简单方法是使用约束或为创建和编辑指定其他路由。

    这是创建额外路由以明确创建和编辑的样子。

    注意:请记住,使用此 URL 结构,您永远无法拥有名为“编辑”或“创建”的城镇。幸运的是,地球上似乎不存在这些城镇(目前),但有 Délété 小镇值得担心:http://nona.net/features/map/placedetail.2381031/D%C3%A9l%C3%A9t%C3%A9/

    routes.MapRoute(
        "Town_Edit",
        "Town/Edit/{restaurantID}",
        new { controller = "Town", action = "Edit" }
    );
    
    routes.MapRoute(
        "Town_Create",
        "Town/Create/",
        new { controller = "Town", action = "Create" }
    );
    
    routes.MapRoute(
        "Town",
        "Town/{townName}/{restaurantID}",
        new { controller = "Town", action = "View", restaurantID = UrlParameter.Optional }
    );
    
    // Default route here
    

    【讨论】:

    • 问个问题:你能不能也写约束版本?
    • 知道了:new { townName = "((?!^Create|Edit$)(^.*$))" } //“创建”和“编辑”townName的限制
    猜你喜欢
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多