我遇到了一个有点令人困惑的路由问题 - 我的路线是:
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,系统会将我路由到正确的控制器并且没有任何问题。
有人能发现发生的事吗?我认为这是一个路由问题,但不知道为什么它可以与网站上的其他所有组合一起使用。但