我有一个奇怪的问题。我有一个控制器动作,需要几个可选参数
Function Index(sectionID As Integer?, title As String) As ActionResult
Return View()
End Function
然后我为此操作方法添加了一个特定的路由,以便我们为此页面获取漂亮的URL
routes.MapRoute( _
"By_Section", _
"home/{sectionID}/{title}", _
New With {.controller = "Home", .action = "Index", .sectionID = Nothing},
New With {.sectionID = "\d+"}
)
这一切都有效。但是,当我在设置了sectionID的页面上(例如http://localhost/home/index/1/test)时,下面的代码会产生奇数输出。
<%= Url.Action("Index", "Home")%>
不是按照您的预期展示http://localhost/home/index,而是显示http://localhost/home/index/1/test。所以看来它正在从当前网址中获取sectionID和title并自动将它们插入到Url中。
如何防止这种情况发生?
由于
詹姆斯
答案 0 :(得分:1)
是的,这是预期的行为,如果您没有明确提供新值,路由系统将重用当前请求中的参数值。渲染链接时的最佳选择是为所有路由参数指定显式值。
<%= Url.Action("Index", "Home", new { sectionID = (int?)null }) %>