我的其中一条路线的可选参数有问题。路线看起来像这样:
routes.MapRoute(
"VideoList", // Route name
"VideoList/{page}", // URL with parameters
new { controller = "Video", action = "VideoList" , page = UrlParameter.Optional}
);
第一次使用时效果很好:
@Html.RouteLink("Video", "VideoList", null, new { id = "idVideo", @class = "menu-item" })
控制器操作取代页面参数得到NULL,我在操作中处理休息。
然后,我玩网页,我再次尝试相同的路由,这次指定'page'参数,让我们说它带有值7。
@Html.RouteLink("Video", "VideoList", new { page = 7 }, new { id = "idVideo", @class = "menu-item" })
它也可以按预期工作,但是当我再次尝试使用没有指定'page'的路由时,由于某种原因上次再次使用此参数的值,这是7
不确定原因。我希望它首次通过将null传递给控制器来获取此参数
如果需要,我会提供更多信息。
答案 0 :(得分:2)
这就是路由的工作原理。如果您不希望RouteLink从当前请求路由值中获取它,则需要显式设置参数:
@Html.RouteLink("Video", "VideoList", new { page = "" }, new { id = "idVideo" })
这将始终生成/VideoList
个网址。如果未将page
参数显式设置为空字符串(如第一个示例中所示),则帮助程序将在生成链接时分析当前请求路由值。如果当前网址为/VideoList/7
,则帮助程序将保留所有路由值并生成/VideoList/7
。