2013-01-14 29 views
0

在這一刻我有下圖路線正則表達式,以避免控制器名稱「圖像」

routes.MapRoute(
      "Default", // Route name 
      "{controller}/{action}/{id}", // URL with parameters 
      new { controller = "Home", action = "Index", id = UrlParameter.Optional },// Parameter defaults 
      new { controller = @"[^\.]*" }       // Parameter constraints 
     ); 

我定義的約束是控制器= @「[^] *」

我需要一個約束以避免名稱爲「圖像」的控制器。

我該怎麼做?

回答

1

由於點在字符類中沒有特殊含義,因此不需要反斜槓來避開點。

對於這一點,你可以使用負前瞻:

new { controller = @"(?!Images)[^.]*" } 

負前瞻是錨,因爲喜歡^$,它不會消耗在正則表達式文本的意義上說,它正在尋找輸入文本中的位置。 lookarounds的另一個名稱是零寬度斷言。