如何将MVC中@Html.PagedListPager转换为ul和li标签
将PagedListPager转换为ul/li分页结构
要把@Html.PagedListPager的输出改成你需要的ul/li格式,最直接的方式是自定义PagedList的显示模板,步骤如下:
- 在项目的
Views/Shared文件夹下新建DisplayTemplates目录(如果没有的话)。 - 在该目录中创建名为
_PagedList.cshtml的视图文件,写入以下代码:
@model PagedList.IPagedList @using PagedList.Mvc; <nav aria-label="分页导航"> <ul class="pagination pagination-sm"> <!-- 上一页按钮 --> @if (Model.HasPreviousPage) { <li class="page-item"> <a class="page-link" href="@Url.Action("DisplayTTs", "TTCreator", new { page = Model.PageNumber - 1, SearchTT = ViewBag.searchTxt })" aria-label="上一页"> <span aria-hidden="true">«</span> </a> </li> } else { <li class="page-item disabled"> <span class="page-link" aria-label="上一页"> <span aria-hidden="true">«</span> </span> </li> } <!-- 页码列表 --> @foreach (var pageNumber in Model.GetPageNumbers()) { if (pageNumber == Model.PageNumber) { <li class="page-item active" aria-current="page"> <span class="page-link">@pageNumber</span> </li> } else { <li class="page-item"> <a class="page-link" href="@Url.Action("DisplayTTs", "TTCreator", new { page = pageNumber, SearchTT = ViewBag.searchTxt })">@pageNumber</a> </li> } } <!-- 下一页按钮 --> @if (Model.HasNextPage) { <li class="page-item"> <a class="page-link" href="@Url.Action("DisplayTTs", "TTCreator", new { page = Model.PageNumber + 1, SearchTT = ViewBag.searchTxt })" aria-label="下一页"> <span aria-hidden="true">»</span> </a> </li> } else { <li class="page-item disabled"> <span class="page-link" aria-label="下一页"> <span aria-hidden="true">»</span> </span> </li> } </ul> </nav>
- 替换原来的分页调用,改成以下两种方式之一:
- 直接使用DisplayFor渲染模板:
@Html.DisplayFor(model => model, "_PagedList") - 或者在PagedListPager中指定模板:
@Html.PagedListPager(Model, page => Url.Action("DisplayTTs", "TTCreator", new { page = page, SearchTT = ViewBag.searchTxt }), new PagedListRenderOptions { DisplayTemplate = "_PagedList" })
- 直接使用DisplayFor渲染模板:
这个模板会根据你的分页模型生成符合要求的结构,包含激活状态的当前页码、禁用的首尾页按钮,以及带正确参数的跳转链接,样式类和你给出的示例完全匹配。
内容的提问来源于stack exchange,提问作者Farhan Ahmed
相关产品推荐
相关产品推荐

