如何通过jQuery Ajax将WebForm值以Model类传入WebAPI控制器?
问题分析与解决方案
你遇到的控制器接收模型为null的问题,核心原因很明确:你通过Ajax传递的是数组格式的JSON数据,但你的Web API控制器期望接收的是一个匹配Login类结构的对象,两者结构不匹配导致模型绑定失败。
下面是具体的修改步骤:
1. 修正Ajax请求的data参数
把原来的数组格式改成和Login类对应的对象结构,这样模型绑定才能正确识别并赋值:
submitData() { var username = $("#username").val(); var password = $("#password").val(); $.ajax({ type: 'POST', contentType: 'application/json; charset=utf-8', url: 'http://localhost:53893/api/login/checkLogin', // 这里把数组改成对象,键名和Login类的属性对应 data: JSON.stringify({ username: username, password: password }), dataType: 'json', async: false, success: function (data) { console.log(data); }, error: function (err) { console.log(err); } }); }
2. 额外注意事项
- 确保JSON对象的键名和
Login类的属性名完全一致(C#的模型绑定默认大小写不敏感,但保持一致能避免不必要的问题); - 建议移除
async: false,同步Ajax请求会阻塞浏览器主线程,影响页面交互体验,改用异步方式处理结果; - 如果你的Web API是较旧版本,确认项目中已经正确配置了JSON媒体类型格式化器(通常默认已配置,但自定义配置时需注意)。
这样修改后,控制器就能正确接收到Login对象,执行后续的登录校验逻辑了。
内容的提问来源于stack exchange,提问作者user8718405
相关产品推荐
相关产品推荐

