Asp.net mvc 4 区域内的路线问题

Asp.net mvc 4 区域内的路线问题,asp.net-mvc-4,asp.net-mvc-routing,Asp.net Mvc 4,Asp.net Mvc Routing,我有一个区域叫广告。这一地区有两条路线规则。但不幸的是,一次只有一条路线规则有效。通常,下面的第一条规则和另一条规则不起作用。但是,如果我是交换规则的话,先来的规则就行了 我会粘贴规则和调用规则的html链接 AdertAreaRegistration.cs中的代码片段 public override void RegisterArea(AreaRegistrationContext context) { context.MapRo

我有一个区域叫广告。这一地区有两条路线规则。但不幸的是,一次只有一条路线规则有效。通常,下面的第一条规则和另一条规则不起作用。但是,如果我是交换规则的话,先来的规则就行了

我会粘贴规则和调用规则的html链接

AdertAreaRegistration.cs中的代码片段

       public override void RegisterArea(AreaRegistrationContext context)
        {


               context.MapRoute(
       "Advert_second",
       "Advert/{controller}/{action}",
       new { controller = "AdvertAdmin", action = "Index" },
       namespaces: new string[] { "LiveChatPrototype.Mvc.Areas.Advert.Controllers" }
   );


        context.MapRoute(
           name: "Advert_default",
            url: "Advert/{id}/{advertid}",
            defaults: new {  controller = "Advertisement", action = "Index", id =UrlParameter.Optional, advertid = UrlParameter.Optional },
            namespaces: new string[] { "LiveChatPrototype.Mvc.Areas.Advert.Controllers" }
        );


}
我用来调用我的规则的html链接

这是第一条规则

这是第二条规则

如果这两个链接中的任何一个先出现,那么它们都会起作用


请问如何使这两条规则同时工作。

目前这两条线路段是相同的

“广告/{controller}/{action}”

“广告/{id}/{advertid}”

两者都有两个动态段,因此asp.net mvc无法区分这两个段,而是匹配第一个段

但是,“Advert/{id}/{advertid}”idadvertid中的段似乎都是整数。然后,可以在路由中添加regex约束以区分它们。 像

希望这有帮助

public override void RegisterArea(AreaRegistrationContext context)
{
    context.MapRoute(
        name: "Advert_default",
        url: "Advert/{id}/{advertid}",
        defaults: new {  controller = "Advertisement", action = "Index" },
        constraints: new { id = @"\d+", advertid = @"\d+" }
        namespaces: new string[] { "LiveChatPrototype.Mvc.Areas.Advert.Controllers" }
    );
    context.MapRoute(
        "Advert_second",
        "Advert/{controller}/{action}",
        new { controller = "AdvertAdmin", action = "Index" },
        namespaces: new string[] { "LiveChatPrototype.Mvc.Areas.Advert.Controllers" }
    );
}