我没有使用网格,只是使用 MvcContrib 寻呼机。我为 Pager 创建了一个局部视图(因此我可以轻松地将其显示在结果的顶部和底部),它调用该@Html. Pager
方法如下:
@Html.Pager(Model.PagedPrograms).First("<<").Last(">>").Next(">").Previous("<").Format("Item {0} - {1} of {2} ")
只要所有参数都通过 QueryString 传递给页面,这无需额外调整即可工作,因为 Pager 知道将这些参数重新构建到 URL 上。
我想为用户提供更改页面大小的选项(比如 20、50、全部)......我可以在控制器端轻松处理它,我可以写类似
@if (Model is Foo) {
@Html.ActionLink<SearchController>(sc => sc.Foo(var1, var2, var3, 20), "20")
@Html.ActionLink<SearchController>(sc => sc.Foo(var1, var2, var3, 50), "50");
@Html.ActionLink<SearchController>(sc => sc.Foo(var1, var2, var3, -1), "All");
}
但是对于可能使用此寻呼机的每种模型类型,我都必须这样做......我可能会想太多或者完全倒退,但我想我会问一下,看看是否有人有洞察力。
目前,寻呼机仅从采用IPagedProgramList
(provides IPagination<ProgramDTO> { get; }
) 的视图中调用,并且我有两个 ViewModel 实现该接口(一个简单搜索和一个高级搜索)。但是,如果这个项目增长并且我们添加了使用该接口的新 ViewModel,我将不得不更新 Pager 部分视图,这看起来很糟糕 / 无法缩放 / 等等。