You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET 8 MVC中X.PagedList Ajax分页请求失效问题求助

排查X.PagedList Ajax分页在.NET 8 MVC中失效的问题

1. 确认前端请求是否携带X-Requested-With头

打开浏览器开发者工具(F12),切换到网络标签,触发分页请求后查看请求头:

  • 检查是否存在X-Requested-With: XMLHttpRequest条目。
  • 若未找到,说明前端脚本未正确添加该头:
    • 若使用jQuery的$.ajax,默认会自动添加,但如果是自定义fetch/axios请求,需手动设置:
      // jQuery示例(无需手动配置,默认自带)
      $.ajax({
        url: '/Controller/Action',
        type: 'GET',
        success: function(data) { /* 处理返回结果 */ }
      });
      
      // fetch请求需手动添加头
      fetch('/Controller/Action', {
        headers: {
          'X-Requested-With': 'XMLHttpRequest'
        }
      });
      

2. 修正.NET Core中请求头的判断逻辑

避免直接用==做严格匹配,改用更严谨的方式处理大小写和多值场景:

public IActionResult Index(int page = 1)
{
    bool isAjax = Request.Headers.TryGetValue("X-Requested-With", out var header) 
                  && header.Equals("XMLHttpRequest", StringComparison.OrdinalIgnoreCase);

    var pagedData = GetYourPagedData(page);
    return isAjax ? PartialView("_PagedListPartial", pagedData) : View(pagedData);
}

3. 替换为适配.NET Core的X.PagedList包

原ASP.NET MVC的X.PagedList.Mvc不兼容.NET Core,需安装对应版本:

  • 安装核心包X.PagedList和MVC扩展包X.PagedList.Mvc.Core
  • 优先选择与.NET 8兼容的最新稳定版

4. 检查视图中分页控件的Ajax配置

确保分页控件正确绑定了Ajax更新目标元素:

@using X.PagedList.Mvc.Core;
@model IPagedList<YourDataModel>

<div id="pagedContentContainer">
    <!-- 列表内容 -->
    @foreach (var item in Model)
    {
        <div>@item.DisplayField</div>
    }

    <!-- 分页控件,配置Ajax更新目标 -->
    @Html.PagedListPager(Model, page => Url.Action("Index", new { page }), 
        new PagedListRenderOptions
        {
            AjaxOptions = new AjaxOptions
            {
                HttpMethod = "GET",
                UpdateTargetId = "pagedContentContainer" // 需与容器ID完全匹配
            }
        })
</div>

5. 验证.NET Core中间件配置

  • 确保app.UseStaticFiles()在app.UseRouting()和app.UseAuthorization()之前,保证jQuery等静态资源正常加载(X.PagedList的Ajax分页依赖jQuery)。
  • 若涉及跨域,需在CORS配置中允许X-Requested-With头:
// Program.cs
builder.Services.AddCors(options =>
{
    options.AddPolicy("AllowCustomHeaders", policy =>
    {
        policy.AllowAnyOrigin()
              .AllowAnyMethod()
              .AllowAnyHeader()
              .WithExposedHeaders("X-Requested-With");
    });
});

app.UseCors("AllowCustomHeaders");

内容的提问来源于stack exchange,提问作者Joe R

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 21:12:47