2009-08-27 75 views
0

我的页面传递函数无法正常工作。出于某种原因,当我尝试将当前pageindex +1传递到同一页面以显示下一个页面时,它并不是这样。路由链接传递页面

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

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

    <% } %> 

如果我只用:“>>>”,“用户),它的工作原理,但接下来的页面功能不工作,因为它不会给下一个值。

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

不知怎的,它不喜欢“新” -thingy末

我对瑞典的错误,但它抱怨一些事情没有找到对用户的位置,或如何路径/路由/参考它的集合。

的ActionResult的样子:

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

回答

1

我会在你的第二个参数Html.RouteLink猜“用户”应该是指你的控制器行动名称。 RouteLink实际上没有(字符串linkText,字符串actionName,对象routeValues)的重载,这是您尝试提供的内容。

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

试试这个

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

替换为您的实际控制人的名字。


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

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

0

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

不太确定使用ActionLink或Kurt描述的方式有何区别。

+0

查看我关于RouteLink和ActionLink的更新答案 – 2009-08-28 12:37:05