2015-11-03 51 views
0

我有以下途徑,與設置爲只約束允許以「CAR」開頭的ID:MVC路線Contraint不工作(奇)

context.MapRoute(
     "Car Detail", 
     "AR/Car/{id}", 
     new { controller = "Car", action = "Detail", id = UrlParameter.Optional }, 
     constraints: new { id = @"^CAR" }, 
     namespaces: new[] { "CarSubmission.Areas.AR.Controllers" } 
    ); 

而且我試圖用這個網址:

www.myapp.com/CarSubmission/AR/Car/CAR223126

當打的網址,瀏覽器,但是,路線不參與。有任何想法嗎?

這是正則表達式(即 「^ CAR」)錯誤的C#?我需要正則表達式來查找「CAR」後面跟着任意數量的數字字符。

+1

是上面出現在路由配置的「默認」一個這條路呢?如果沒有,請嘗試移動路線,使其在「默認」路線之前列出。 –

+2

除了什麼其他人所說的,是你的CarSubmission站點的根目錄?如果沒有,你的模板也不會匹配。 –

回答

2

對於分段約束,您不需要使用^(或$)。

儘管如此,您的正則表達式是錯誤的,因爲您不希望在"CAR"之後的任何字符

你應該有這樣的事情:

CAR\d+ 

這將匹配CAR其次一個或多個號碼。

或者:

CAR\d{6} 

這將匹配之後剛好6CAR

1

不會 「^ CAR」 只匹配字符串 「CAR」?試試@ 「^ CAR \ d +」

0

我覺得你的正則表達式是錯誤的。你有什麼期待的只是字符串CAR。你需要告訴它匹配最後的數字。試試這個:

^CAR\d* 

它說「事後匹配開始CAR字符串和任意數量的數字。」