在我的 ASP MVC Web 应用程序中,我的控制器通常具有带有“名称”参数的操作,如下所示:
Function Consult(name As String) As ActionResult
.....
Return View()
End Function
我希望能够以与使用“id”参数浏览它们相同的方式浏览这些操作:../Book/Consult/MyBookName
但我希望默认路由继续使用“id”参数。换句话说,我希望默认路由接受“id”或“name”作为参数名称。
所以我尝试像这样配置我的路由,但它不起作用,因为所有请求似乎都使用第一个路由,而不是第二个。带有“id”参数的操作不再起作用。
routes.MapRoute( _
name:="Name", _
url:="{controller}/{action}/{name}", _
defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _
)
//Default Route
routes.MapRoute( _
name:="Default", _
url:="{controller}/{action}/{id}", _
defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional} _
)
我的代码示例在 VB 中,但我也会接受 C# 中的答案 :) 非常感谢。
编辑:澄清一下,如果我只是将参数重命名为“id”,那么在我的路由配置中使用默认路由一切正常。但我想保留“名称”,因为在这些特定情况下它更干净..