ASP.NET Core 6 MVC迁移X.PagedList.Mvc.Core遇命名空间缺失问题
解决方案:X.PagedList.Mvc.Core 8.x替代旧版Common命名空间功能
1. 替换PagedListRenderOptions
8.x版本中,PagedListRenderOptions已迁移至X.PagedList.Mvc.Core命名空间,无需再引用Common。直接使用该命名空间下的类即可,常用配置项与旧版兼容,示例代码如下:
@using X.PagedList.Mvc.Core; @{ var options = new PagedListRenderOptions { DisplayLinkToFirstPage = PagedListDisplayMode.Always, DisplayLinkToLastPage = PagedListDisplayMode.Always, DisplayLinkToPreviousPage = PagedListDisplayMode.Always, DisplayLinkToNextPage = PagedListDisplayMode.Always, // 按需添加其他配置项 }; } @Html.PagedListPager(Model, page => Url.Action("Index", new { page }), options)
2. 替换UpdateTargetId(AJAX分页支持)
8.x版本取消了UpdateTargetId属性,需结合jQuery手动实现局部刷新:
- 确保视图引入jQuery
- 给分页组件添加自定义属性标记目标容器
- 拦截分页点击事件,发起AJAX请求并更新容器内容
示例代码:
<!-- 待更新的目标容器 --> <div id="paginationContent"> @Html.PagedListPager(Model, page => Url.Action("Index", new { page }), new PagedListRenderOptions { LiElementClasses = new[] { "page-item" }, PageClasses = new[] { "page-link" }, // 添加自定义属性用于捕获目标容器 HtmlAttributes = new Dictionary<string, object> { { "data-target", "#paginationContent" } } }) </div> <script src="~/lib/jquery/dist/jquery.min.js"></script> <script> $(document).on("click", ".page-link", function (e) { e.preventDefault(); var target = $(this).closest("ul").data("target"); var requestUrl = $(this).attr("href"); $.get(requestUrl, function (response) { $(target).html($(response).find(target).html()); }); }); </script>
3. 额外说明
- 控制器中可通过
Request.Headers["X-Requested-With"] == "XMLHttpRequest"判断是否为AJAX请求,按需返回部分视图或完整视图 - 若需更复杂的分页渲染逻辑,可基于
X.PagedList.Mvc.Core的扩展方法自定义实现
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

