0

我对其中一条路线的可选参数有疑问。路线看起来像这样:

            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 代替页面参数,我在操作中处理休息。

然后,我使用网页并再次尝试相同的路由,这次指定“页面”参数,假设它的值为 7。

@Html.RouteLink("Video", "VideoList", new { page = 7 }, new { id = "idVideo", @class = "menu-item" })

它也可以按预期工作,但是当我再次尝试使用未指定“页面”的路由时,由于某种原因,它再次携带上次用于此参数的值,即 7

不知道为什么。我希望它通过将 null 传递给该参数的控制器来作为第一次工作

如果需要,我会提供更多信息。

4

1 回答 1

2

这就是路由的工作原理。如果您不希望 RouteLink 从当前请求路由值中获取该参数,则需要显式设置该参数:

@Html.RouteLink("Video", "VideoList", new { page = "" }, new { id = "idVideo" })

这将始终生成/VideoListurl。如果您没有将page参数显式设置为空字符串(如第一个示例中所示),则帮助程序将在生成链接时分析当前请求路由值。如果当前 url 是/VideoList/7,那么助手将保留所有路由值并生成/VideoList/7.

于 2012-12-29T10:38:06.450 回答