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

ASP.NET MVC中jqGrid无法调用控制器Action且数据加载失败排查

排查与修复jqGrid无法触发控制器Action的问题

我帮你梳理了几个关键问题,按顺序修复应该就能解决:

1. 错误的网格重载事件名

你的reloadGridmsg函数里,触发的是自定义的reloadGridmsg事件,但jqGrid的官方重载事件是reloadGrid——这是导致请求根本没发起的核心原因!

修复后的reloadGridmsg函数:

function reloadGridmsg() {
    var urlName = '@Url.Action("GetMessagesForGrid", "MD")';
    $grid.jqGrid("setGridParam", { 
        url: urlName, 
        datatype: "json", 
        page: 1 
    }).trigger("reloadGrid"); // 此处改为官方重载事件名
    $gridDiv.show();
    alert(urlName);
}

2. loadonce配置的潜在冲突(可选优化)

你设置了loadonce: true,第一次加载数据后jqGrid会自动把datatype改成local。虽然你已经在setGridParam里强制指定了datatype: "json",但如果后续出现重复加载本地数据的情况,需要确认这个配置是否符合你的业务需求(如果需要每次操作都请求服务器,可考虑将loadonce设为false)。

3. 控制器参数模型的兼容性检查

确保你的StudVM类包含jqGrid默认传递的分页参数,否则模型绑定可能失败:

public class StudVM
{
    public int page { get; set; } // jqGrid默认传递的页码
    public int rows { get; set; } // 每页行数
    public string sidx { get; set; } // 排序字段
    public string sord { get; set; } // 排序方向(asc/desc)
    // 你的其他业务属性...
}

4. 额外调试技巧

  • 打开浏览器开发者工具(F12),切换到Network标签,查看请求是否发送、状态码及响应内容
  • 在控制器GetMessagesForGrid方法开头添加断点,确认请求是否到达

按照上述步骤修复后,应该就能触发控制器Action并正常加载数据了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:52:44