2013-10-18 49 views
0

在我的ASP.NET MVC 4移動應用程序,我有一個路線定義爲:具有多個可選參數的RouteTable.Routes.GetVirtualPath()錯誤?

routes.MapRoute(
       name: "GraveNavigation", 
       url: "Unites/{development}/{field1}/{field2}/{field3}/{field4}/{field5}", //each development have unique location hierarchy. One may have Section/Block/Path/Lot/Unit, another may only have Block/Lot/Unit. 
       defaults: new 
         { 
          controller = "Unit", 
          action = "Index", 
          development= UrlParameter.Optional, 
          field1 = UrlParameter.Optional, 
          field2 = UrlParameter.Optional, 
          field3 = UrlParameter.Optional, 
          field4 = UrlParameter.Optional, 
          field5 = UrlParameter.Optional 
         } 
      ); 

如果我使用的方法在此頁面中,我總是會得到一個空VDP如果我有超過四(4 )可選參數。因此,與"Unites/{development}/{field1}/{field2}/{field3}",它工作正常,我得到一個有效的VirtualPathData。一旦我有"Unites/{development}/{field1}/{field2}/{field3}/{field4}..."作爲路由URL,RouteTable.Routes.GetVirtualPath總是返回null。

如果我使用@Url.RouteUrl實用上來看,我可以構造一個標籤,但同樣的問題:

var v = oneLevelInTheHierarchy; 

<a href='@Url.Action("Index", new { cemetery = v.development, field1 = v.field1, field2 = v.field2, field3 = v.field3, field4 = v.field4 })'>@v.Name</a> 

這需要時間來找出並有網上非常有限的討論。因此,如果asp.net 4路由支持4個以上的可選參數,這會讓我感動嗎?

或者如果我錯誤地使用該方法?

回答

0

爲什麼不使用使用包羅萬象:

routes.MapRoute(
      name: "GraveNavigation", 
      url: "Unites/{development}/{*fields}" 
      ...);