使用Ajax提交PremiseID与ApplicationID至数据库失败求助
问题分析与解决方案
以下是导致提交失败的核心问题及修正方案:
1. 请求数据结构与后端模型不匹配
前端构造的requestModel存在两个关键问题:
- 属性名拼写错误:后端模型的属性是
PremisesID(带尾缀s),但前端写的是premiseID(无s),导致参数无法绑定到后端模型。 ApplicationID嵌套错误:前端将其包装为{ applicationID: ... }对象,而后端仅需字符串类型的ApplicationID,直接赋值下拉框返回值即可。
2. Ajax请求格式错误
后端通过请求体接收模型,默认情况下jQuery Ajax会以application/x-www-form-urlencoded格式发送数据,无法被正确解析为LinkApplicationToChecklistRequest对象,必须指定contentType为application/json,并将数据转为JSON字符串。
3. JS语法错误
Ajax配置中url行末尾缺少逗号,会导致JavaScript执行报错,直接中断请求发送流程。
修正后的前端代码
function SubmitApplication() { var requestModel = { PremisesID: "@Model.HMOPremiseDetails.PremisesID", ApplicationID: $("#ddlState").val() }; $.ajax({ type: "POST", url: "@Url.Action("UpdateLinkApplicationToChecklist", "MyHomeChecklist", new { area ="Application" })", contentType: "application/json", data: JSON.stringify(requestModel), success: function (result) { alert("Success!"); console.log(result); }, error: function (err) { alert("Error!"); console.log(err); } }); }
额外检查项
- 确认自定义下拉框赋值逻辑:检查
$("#ddlState").val()是否能正确返回选中的ReferenceNo,若自定义下拉框未正确绑定值,需调整下拉框选择事件的赋值代码。 - 后端业务逻辑排查:在
UpdateLinkApplicationToChecklist方法中添加日志或断点,确认参数是否正确接收,同时检查_hmoHelper.LinkApplicationToChecklistAsync方法是否正确执行了数据库写入操作,排查内部业务逻辑异常。
内容的提问来源于stack exchange,提问作者Suraya Zulkifli
相关产品推荐
相关产品推荐

