【问题标题】:RouteTable.Routes.GetVirtualPath() bug with multiple optional parameter?RouteTable.Routes.GetVirtualPath() 带有多个可选参数的错误?
【发布时间】:2013-10-18 12:54:07
【问题描述】:

在我的 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个可选参数,这让我感到困惑?

或者如果我使用方法不正确?

【问题讨论】:

    标签: asp.net asp.net-mvc routing optional-parameters


    【解决方案1】:

    为什么不使用包罗万象:

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

    【讨论】:

      猜你喜欢
      • 2019-03-11
      • 2013-12-07
      • 1970-01-01
      • 2016-11-15
      • 2012-08-13
      • 1970-01-01
      • 2017-03-03
      • 2015-06-12
      • 2023-03-08
      相关资源
      最近更新 更多