使用城市和国家URL的MVC自定义属性路由

时间:2018-02-01 06:15:31

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

我想在MVC中创建自定义属性路由,我希望我的网址如下:

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。

请正确理解实施此问题?

1 个答案:

答案 0 :(得分:2)

您收到错误是因为当您输入

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)]

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