使用jQuery AJAX向MVC Controller传值时始终解析为Null问题
解决jQuery AJAX传递JSON到MVC Controller时模型属性为Null的问题
核心原因
通过AJAX发送JSON格式请求体时,ASP.NET Core需要明确告知模型绑定器从请求体中解析数据,否则框架无法正确识别并填充模型属性,导致emailAttr.templateID始终为Null。
解决方案
为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); }确保模型类属性配置正确
检查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; } }前端AJAX代码无需修改
你的前端代码配置已正确,确认以下关键参数:contentType: "application/json;charset=utf-8":正确指定请求体格式为JSONdata: JSON.stringify(EmailAttr):将对象序列化为JSON字符串processData: false:阻止jQuery自动将数据转换为URL编码格式
验证
修改后重新调试,emailAttr.templateID即可正确获取前端传递的d-bdc3d9aef71d418780c9a3c2c9521225值。
内容的提问来源于stack exchange,提问作者immortalsaurus
相关产品推荐
相关产品推荐

