具有城市和国家/地区 URL 的 MVC 自定义属性路由

MVC Custom Attribute routing with City and Country URL

我想在 MVC 中创建自定义属性路由,我希望我的 URL 像这样:

www.domain.com/in/best-restaurants-in-india    // FOR COUNTRY INDIA

www.domain.com/in/best-restaurants-in-new-delhi-india  // for COUNTRY INDIA CITY DELHI

为此我尝试使用这个

  [Route("{isocountry}/best-restaurants-in-{country}")]
  [Route("{isocountry}/best-restaurants-in-{city}-{country}")]

但这给出了一个模棱两可的路由问题

我知道这是可能的,因为我在 php 中看到其他网站使用相同的方法,但不知道如何使用 MVC。

请给出实现这个的正确想法?

你得到错误是因为当你输入

www.domain.com/in/best-restaurants-in-india

它匹配路线 in-{country} 然后你输入

www.domain.com/in/best-restaurants-in-new-delhi-india

它匹配两个路由,因为 delhi-india 是一个字符串,并且可以同时是这两个路由,这使得它雄心勃勃。

你可以通过在路由属性中应用 Order 来实现这一点,因为你的路由应该从最具体到最通用来定义,所以你的路由应该像这样

 [Route("{isocountry}/best-restaurants-in-{country}",Order = 2)]
 [Route("{isocountry}/best-restaurants-in-{city}-{country}",Order = 1)]

首先它会检查特定的路线,然后是一般定义的路线。