MVC Route不使用一组参数

时间:2018-02-24 09:04:53

标签: asp.net-mvc vb.net

我遇到了一个有点令人困惑的路由问题 - 我的路线是:

Public Sub RegisterRoutes(ByVal routes As RouteCollection)
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}")
    AreaRegistration.RegisterAllAreas()

    routes.MapRoute(
        name:="StrategyDefinitionGet",
        url:="Strategy/Definition/{strategyId}/{resultId}",
        defaults:=New With {.controller = "Strategy", .action = "Definition", .resultId = UrlParameter.Optional},
        constraints:=New RouteValueDictionary(New With {.httpMethod = New HttpMethodConstraint("GET")})
    )

    routes.MapRoute(
        name:="Default",
        url:="{controller}/{action}/{id}",
        defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional}
    )
End Sub

和我的战略控制器 - 定义行动是:

<HttpGet, AllowAnonymous> 
Async Function Definition(strategyId As Integer, Optional resultId As Integer? = Nothing) As Task(Of ActionResult)

还有一个Post版本的动作(包括解释为什么我在上面的路线中有GET约束):

<HttpPost, Authorize, ValidateAntiForgeryToken>
Async Function Definition(strategyModel As StrategyModel) As Task(Of ActionResult)

当我访问网站上的任何链接时,例如https://investorsedge.net:8443/Strategy/Definition/12898/11583,一切都会正常排列。

当我转到此网址https://investorsedge.net:8443/Strategy/Definition/15626/13684时,路由系统会将我带到Home / Index。

奇怪的是,如果我从网址中删除可选参数,例如https://investorsedge.net:8443/Strategy/Definition/15626,系统会将我路由到正确的控制器并且没有任何问题。

有人能发现发生的事吗?我认为这是一个路由问题,但不知道为什么它可以与网站上的其他所有组合一起使用。但

0 个答案:

没有答案