我想在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。
请正确理解实施此问题?
答案 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)]
首先它将检查特定路线,然后检查一般定义的路线。