具有可空参数的MVC3路由问题

时间:2011-07-15 12:00:17

标签: asp.net-mvc routing

我有一个奇怪的问题。我有一个控制器动作,需要几个可选参数

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中。

如何防止这种情况发生?

由于

詹姆斯

1 个答案:

答案 0 :(得分:1)

是的,这是预期的行为,如果您没有明确提供新值,路由系统将重用当前请求中的参数值。渲染链接时的最佳选择是为所有路由参数指定显式值。

<%= Url.Action("Index", "Home", new { sectionID = (int?)null }) %>