2012-01-04 64 views
1

http://blogs.msdn.com/b/simonince/archive/2011/02/02/asp-net-mvc-3-optional-parameter-routing-issue.aspxASP.NET MVC 3可選參數路由問題

上述網站中提到的解決方法是可以接受的。但是如果最後一個參數不是可選的,前兩個在MVC3中是可選的,會發生什麼?任何人都可以知道解決方法。這只是一個令我困惑的疑問。

+0

如果是這樣,你會如何定義你的url模式?如果模式可以與衆不同,您應該將其映射爲另一個路由條目 – Nat 2012-01-04 04:30:56

回答

3

在MVC3路由定義中,只有最後一個參數可以是可選的。正如Nat提示的那樣,您可以爲同一個控制器操作方法創建多個路由。

如果你想有一個必要的參數和2個可選的參數,你可以定義多個路線:

...MapRoute(null, "static-segment/{required}/{optional1}/{optional2}", 
    new { controller = "ControllerName", action = "ActionName", 
     optional2 = UrlParameter.Optional }); 

...MapRoute(null, "static-segment/{required}/{optional1}", 
    new { controller = "ControllerName", action = "ActionName", 
     optional1 = UrlParameter.Optional }); 

...MapRoute(null, "static-segment/{required}/{optional2}", 
    new { controller = "ControllerName", action = "ActionName", 
     optional2 = UrlParameter.Optional }); 

擁有一個單一的路線,其中有2個可選的參數是你不能做MVC3。另外,有一個可選參數出現在路由中的必需參數之前是您在MVC3中無法做到的。您需要充實所有的路由模式場景,並創建符合URL架構中每個案例的路由。