2012-03-19 54 views
0

我試圖把約束放到不想工作的路由上。相反,要提供一個約束控制器列表允許,我試圖限制這條路線除了ProjectController的所有控制器。正則表達式的MVC路由

context.MapRoute("Project_Projects", 
     "Project/{prj}/{controller}/{action}/{id}", 
     new { controller = "Dashboard", action = "Index", 
       id = UrlParameter.Optional }, 
     new 
     { 
      prj = new ProjectRouteConstraint(), 
      controller = @"[^Project]" 
     } 
     ); 

此路線應該用於除ProjectController之外的所有控制器。至於文檔去它將使用Regex.IsMatch函數來檢查它,我仔細檢查正則表達式,似乎是正確的,但它似乎並沒有工作。

我錯過了什麼嗎?

+2

這正則表達式不只是排除'ProjectController'。 '[^ asdf]'語法用於[characters](http://www.regular-expressions.info/charclass.html),所以這會排除更多。 – bzlm 2012-03-19 09:30:32

回答

2

試試下面的約束:

controller = @"^(?!project$).*$" 
+0

顯示我知道多少正則表達式。我如何限制它只能排除以項目開始?因爲對於像「EditProject」這樣的東西,這仍然會返回true? – adriaanp 2012-03-19 12:15:45

+0

忽略之前的評論,我只是很愚蠢。 – adriaanp 2012-03-19 12:25:49