在我的 ASP.NET MVC 4 移动应用程序中,我将路由定义为:
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
}
);
如果我使用此页面中的方法,如果我有超过四 (4) 个可选参数,我将始终得到一个空 vdp。因此,使用"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 个可选参数,这让我徘徊?
或者如果我错误地使用了该方法?