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

使用jQuery AJAX向MVC Controller传值时始终解析为Null问题

解决jQuery AJAX传递JSON到MVC Controller时模型属性为Null的问题

核心原因

通过AJAX发送JSON格式请求体时,ASP.NET Core需要明确告知模型绑定器从请求体中解析数据,否则框架无法正确识别并填充模型属性,导致emailAttr.templateID始终为Null。

解决方案

  1. 为Controller参数添加[FromBody]特性
    修改Controller方法,在EmailAttr参数前加上[FromBody],告诉框架从请求体中解析JSON数据:

    [HttpPost]
    public async Task<IActionResult> SendEmail([FromBody] EmailAttr emailAttr)
    {
        var result = await _mailService.SendEmailAsync(emailAttr.templateID);
        return Json(emailAttr);
    }
    
  2. 确保模型类属性配置正确
    检查EmailAttr模型类,确保属性为public访问修饰符,且属性名称与前端传递的键名匹配(ASP.NET Core默认支持camelCase与PascalCase的自动映射,以下两种写法均可行):

    // 写法1:与前端键名完全一致(camelCase)
    public class EmailAttr
    {
        public string templateID { get; set; }
    }
    
    // 写法2:PascalCase,框架自动匹配前端的camelCase键名
    public class EmailAttr
    {
        public string TemplateID { get; set; }
    }
    
  3. 前端AJAX代码无需修改
    你的前端代码配置已正确,确认以下关键参数:

    • contentType: "application/json;charset=utf-8":正确指定请求体格式为JSON
    • data: JSON.stringify(EmailAttr):将对象序列化为JSON字符串
    • processData: false:阻止jQuery自动将数据转换为URL编码格式

验证

修改后重新调试,emailAttr.templateID即可正确获取前端传递的d-bdc3d9aef71d418780c9a3c2c9521225值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:11:13