Asp.net mvc 4 区域内的路线问题
我有一个区域叫广告。这一地区有两条路线规则。但不幸的是,一次只有一条路线规则有效。通常,下面的第一条规则和另一条规则不起作用。但是,如果我是交换规则的话,先来的规则就行了 我会粘贴规则和调用规则的html链接 AdertAreaRegistration.cs中的代码片段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
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}”id和advertid中的段似乎都是整数。然后,可以在路由中添加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" }
);
}