2009-07-22 208 views
6

在ASP.NET MVC中,是否可以根據URL部分的數據類型定義可以確定使用哪個控制器的路由?ASP.NET MVC URL路徑

例如:

routes.MapRoute("Integer", "{myInteger}", new { controller = "Integer", action = "ProcessInteger", myInteger = "" }); 

routes.MapRoute("String", "{myString}", new { controller = "String", action = "ProcessString", myString = "" }); 

從本質上講,我想以下URL到由不同的控制器,即使它們具有相同數量的部件的處理:

MYDOMAIN/123

mydomain/ABC

PS上面的代碼不起作用,但它代表了我想達到的目標。

回答

7

是的,如果你使用constraints

像這樣:

routes.MapRoute(
       "Integers", 
       "{myInteger}", 
        new { controller = "Integer", action = "ProcessInteger"}, 
        new { myInteger = @"\d+" } 
     ); 

如果你把你的字符串的路線上面的路線(即不包含@"\d+"約束),則它會過濾掉包含整數的任何路由,並且任何沒有整數的任何路由都會通過,並且您的路由將會選取它。

真正的訣竅是路由可以根據Regular Expressions來過濾通過的內容,這就是您如何確定應該如何選擇它的方法。

+0

這是一種享受,謝謝。 – 2009-07-22 14:04:29