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

控制器未返回JSON结果至视图,JQuery更新复选框列表遇阻

我来帮你梳理下这个问题哈~

首先得明确不同ASP.NET框架版本对JSON返回的默认规则差异,这应该就是你遇到问题的核心原因:

1. 先搞清楚你用的是哪个版本的ASP.NET

  • 如果是ASP.NET MVC 3或更早版本:
    出于JSON劫持的安全考虑,框架默认禁止通过GET请求返回JSON数据,所以必须显式指定允许GET,也就是示例里的写法:

    return Json(data, JsonRequestBehavior.AllowGet);
    

    这时候要确保你已经引用了System.Web.Mvc命名空间,不然JsonRequestBehavior枚举会找不到。

  • 如果是ASP.NET MVC 4+ 或者 ASP.NET Core:
    框架已经默认放开了GET请求返回JSON的限制,JsonRequestBehavior.AllowGet这个参数已经被移除或者不再需要了——这时候你写return Json(data);就完全够用,反而硬加旧参数可能会报错(你说没报错,大概率是用了Core这类新版本)。

2. 给你几个调试排查的小建议

  • 打开浏览器F12开发者工具,切换到「网络」标签,看看你的AJAX请求对应的响应内容:确认控制器是不是真的返回了正确格式的JSON,而不是其他内容。
  • 检查你的jQuery AJAX请求是不是用的GET方式?如果是POST请求,不管哪个版本的写法都不会有问题,但如果是GET,旧版本必须显式允许。
  • 确认控制器方法上有没有加[HttpGet]特性,确保请求方式和控制器的配置匹配。

举个实际代码例子参考:

ASP.NET Core 版本的控制器写法

[HttpGet]
public IActionResult GetCheckboxList()
{
    // 模拟你的复选框数据
    var checkboxData = new List<object>
    {
        new { Id = 1, Label = "选项1", IsChecked = false },
        new { Id = 2, Label = "选项2", IsChecked = true }
    };
    return Json(checkboxData); // 默认允许GET,直接返回即可
}

旧版ASP.NET MVC 写法

[HttpGet]
public ActionResult GetCheckboxList()
{
    var checkboxData = new List<object>
    {
        new { Id = 1, Label = "选项1", IsChecked = false },
        new { Id = 2, Label = "选项2", IsChecked = true }
    };
    return Json(checkboxData, JsonRequestBehavior.AllowGet); // 必须加AllowGet参数
}

总结

你的情况应该是用了较新的ASP.NET框架,所以不需要纠结JsonRequestBehavior.AllowGet,直接用return Json(data)就可以正常返回JSON给jQuery了。如果还是有疑问,先确认下项目的框架版本,再看看网络请求的响应内容是否正常就行~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:07:04