我有2条不同的路线:

context.MapRoute(
    "zyzzyva_default",
    "{urlTitle}",
    new { area = "zyzzyva", action = "Index", controller = "Home", urlTitle = UrlParameter.Optional }
);

第二:
context.MapRoute(
    "Vip_default_vip_thankyou",
    "{partnername}-vip-thank-you",
    new { controller = "Vip", action = "ThankYou", partnername = "" },
    new string[] { "Web.Areas.Vip.Controllers" }
);

当我去 mydomain.com/aaaa-vip-thank-you 时,它​​应该使用第二条路线,但我不明白为什么它使用第一条路线。

最佳答案

第一条路线太笼统了。

路由与按注册顺序找到的第一个匹配项一起工作。

更改映射顺序。

context.MapRoute(
    "Vip_default_vip_thankyou",
    "{partnername}-vip-thank-you",
    new { controller = "Vip", action = "ThankYou", partnername = "" },
    new string[] { "Web.Areas.Vip.Controllers" }
);

context.MapRoute(
    "zyzzyva_default",
    "{urlTitle}",
    new { area = "zyzzyva", action = "Index", controller = "Home",urlTitle = UrlParameter.Optional }
);

关于c# - ASP.NET MVC 路由不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39978432/

10-11 02:05