通过routelink页面

时间:2009-08-27 18:23:08

标签: asp.net-mvc

我的寻呼机功能有问题。出于某种原因,当我尝试将当前的pageindex +1传递到同一页面以便显示下一页时,它不喜欢。

<% if (Model.Users.HasNextPage) { %>

    <%= Html.RouteLink(">>>", "Users", new { page = (Model.Users.PageIndex +1) })%>

    <% } %>

如果我只使用:“&gt;&gt;&gt;”,“用户”,它可以正常工作,但下一页功能不起作用,因为它不会分配下一个值。

如果我调试Model.Users.PageIndex,它在加载页面时应该具有值0(应该具有该值)。

不知怎的,它不喜欢最后的“新” -

我有瑞典语错误,但它抱怨没有找到用户位置的路径/路径/引用,或者它的设置。

动作结果如下:

    public ActionResult Users(int? page){
        const int pagesize = 10;

        var pagnatedUsers = new PaginatedList<User>(_us.GetUsers(), page ?? 0, pagesize);

        return View("Users", new UserAdminEditViewModel { Users = pagnatedUsers });
    }

提前致谢 / M

2 个答案:

答案 0 :(得分:1)

我猜你的第二个Html.RouteLink参数中的“Users”应该引用你的控制器动作名称。 RouteLink实际上没有重载(string linkText, string actionName ,object routeValues),这是你试图提供的。

您调用的重载实际上是在第二个参数中要求 routeName ,并且您没有定义这样的路由!

试试这个

Html.RouteLink(">>>", new { controller="Home", action="Users", page = (Model.Users.PageIndex +1) })%>

替换您的实际控制器名称。


更新/回复:我试图解释为什么你的代码没有按预期工作。实际上,如果你使用ActionLink而不是原始参数,这也是一个解决方案 - 可能是更好的,因为它似乎是你想要的。

RouteLink和ActionLink本质上是相同的(它们最终都调用了实际生成链接的相同底层代码)。区别仅在于使用环境 - RouteLink可以帮助您根据路由配置生成链接(例如,通过路由名称),ActionLink可以根据您的控制器操作(例如,通过操作名称)进行链接。并且有很多重叠,您可以以完全相同的方式使用它们。

答案 1 :(得分:0)

我从Nerddinner示例中获得了RouteLink代码。现在,当我改为ActionLink而不是RouteLink时,它起作用了。

不完全确定使用ActionLink或Kurt描述的方式之间有什么区别。