我的寻呼机功能有问题。出于某种原因,当我尝试将当前的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
答案 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描述的方式之间有什么区别。