【发布时间】:2018-05-14 22:03:58
【问题描述】:
我想为我的项目创建一个包含列表的所有页面的通用分页组件。
我曾经使用过老式的网络表单,但我不确定使用 asp.net mvc 核心中的最佳实践。
我已阅读 Microsoft 提供的很棒的文档:https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/sort-filter-page#add-paging-functionality-to-the-students-index-page
我已将 PaginatedList 类放入我的项目中。
一切都很好。
但我想将用于分页的 html 内容放在部分视图中(以便分解 html 代码):
@model PaginatedList<T>
@{
var prevDisabled = !Model.HasPreviousPage ? "disabled" : "";
var nextDisabled = !Model.HasNextPage ? "disabled" : "";
}
<a asp-action="Index"
asp-route-param1="@ViewData["param1"]"
asp-route-page="@(Model.PageIndex - 1)"
class="btn btn-default @prevDisabled">
Previous
</a>
<a asp-action="Index"
asp-route-param1="@ViewData["param1"]"
asp-route-page="@(Model.PageIndex + 1)"
class="btn btn-default @nextDisabled">
Next
</a>
然后,我想把这一行放在每个列表页面的底部:
@Html.Partial("~/Views/Shared/_pagination.cshtml", Model)
我有两个问题:
在我的局部视图的第一行,我不知道应该放置哪种数据类型。它可能是 PaginatedList、PaginatedList 或其他任何东西。 我不知道说“模型是分页列表,其中 T 可以是我项目的任何实体”的好语法。我尝试放object而不是T,但它不起作用。
如您所见,prev/next 链接包含其他参数 (param1)。该参数可以是过滤器。但是这个过滤器不一样。有没有办法对标签说:“复制您可以看到的每个 GET 参数及其当前值”?
谢谢
【问题讨论】:
-
我不认为剃须刀页面可以做到这一点。虽然它们与旧的 Web 表单有一些相似之处,但它们实际上是 MVC 视图和控制器的简化包装器。您将需要使用页面参数调用 OnGet 函数或修改代码以使用 AJAX
标签: razor-pages asp.net-core-mvc-2.0