ASP.NET Core中使用Ajax向Controller发送数据接收到null值问题求助
问题排查与解决方案
1. 阻止表单默认提交行为
你触发请求的按钮是type="submit"类型,点击时会触发表单默认提交逻辑,导致Ajax请求被中断/参数异常,两种修复方案二选一:
- 方案1:修改HTML中按钮的type属性
<button class="btn btn-secondary" type="button" id="sagTikMenuKategoriGuncelleButonModal">Güncelle</button> - 方案2:在jQuery的click事件中阻止默认行为
$("#sagTikMenuKategoriGuncelleButonModal").click(function (e) { e.preventDefault(); // 新增这行代码 // 剩余原有代码不变 });
2. 显式指定参数绑定来源
ASP.NET Core默认不会自动把表单格式请求数据绑定到复杂类型参数,在Controller的方法参数前加[FromForm]注解:
[HttpPost] public IActionResult kategoriAlanGuncelle([FromForm] urunKategorileri mod) { // 剩余原有代码不变 }
如果你后续要传JSON格式参数,需要把Ajax的contentType设为application/json; charset=utf-8,同时把data转成JSON字符串,参数注解换成[FromBody]即可。
3. 修复ID参数类型不匹配问题
jQuery侧通过attr("id")获取到的是字符串类型,如果你的urunKategorileri实体类中urunKategorileriId字段是int/long数值类型,字符串转数值失败会导致整个模型绑定失败,把JS里的ID值转成数值类型:
kategoriAlanAdGuncel.urunKategorileriId = parseInt(kategoriAlanGuncelleId);
4. 实体类规范检查
确认你的urunKategorileri类符合模型绑定要求:
- 类本身是public修饰
urunKategorileriId、urunKategorileriKategoriAdi属性是public修饰,且同时有get和set访问器// 正确示例 public class urunKategorileri { public int urunKategorileriId { get; set; } public string urunKategorileriKategoriAdi { get; set; } // 其他属性 }
内容的提问来源于stack exchange,提问作者Batuhan Fındık
相关产品推荐
相关产品推荐

