asp.net 具有多个可选 ID 的 MVC 3 寄存器区域不起作用



我正试图在ASP.NET web应用程序中捕获多个可选参数。当我在RegisterArea()中定义MapRoute时,它破坏了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

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

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

我认为你不可能有一个有几个可选参数的路由,只有最后一个参数可以是可选的,正是因为你描述的问题。

相关内容

  • 没有找到相关文章

最新更新