0

我正在尝试在 ASP.NET Web 应用程序中捕获多个可选参数。当我定义MapRoutein 时RegisterArea(),它破坏了Html.ActionLink()方法。

以下代码有效:

    Public Overrides Sub RegisterArea(ByVal context As System.Web.Mvc.AreaRegistrationContext)
        context.MapRoute( _
            "Register_default", _
            "Register/{controller}/{action}/{id1}", _
            New With {.controller = "Home", .action = "Index", .id1 = UrlParameter.Optional} _
        )
    End Sub

但是当我修改 URL 以包含多个可选参数(如下)时,它导致我的所有Html.ActionLink()方法都创建带有空 href 的锚标记。有人能告诉我是什么导致这种情况发生吗?

    Public Overrides Sub RegisterArea(ByVal context As System.Web.Mvc.AreaRegistrationContext)
        context.MapRoute( _
            "Register_default", _
            "Register/{controller}/{action}/{id1}/{id2}/{id3}/{id4}", _
            New With {.controller = "Home", .action = "Index", .id1 = UrlParameter.Optional, .id2 = UrlParameter.Optional, .id3 = UrlParameter.Optional, .id4 = UrlParameter.Optional} _
        )
    End Sub
4

2 回答 2

1

这是 MVC3/System.Web.Routing 中的一个错误:

http://haacked.com/archive/2011/02/20/routing-regression-with-two-consecutive-optional-url-parameters.aspx

于 2011-11-22T14:48:01.117 回答
0

我认为您不能拥有具有多个可选参数的路由,由于您描述的问题,只有最后一个参数可以是可选的。

于 2011-06-30T19:30:51.707 回答