ASP.NET Core控制器通过JS/JQuery获取设置值时始终为NULL
解决ASP.NET Core中JS设置表单值后控制器接收为Null的问题
排查与解决步骤:
确保表单提交目标Action正确
你的form标签未指定提交目标,默认会提交到当前页面对应的Action。如果处理逻辑在UsersAction中,需显式指定控制器和Action:<form id="depForm" class="formAddDepart" method="post" asp-action="Users" asp-controller="Post">(将
Post替换为你的实际控制器名称)改用name属性选择表单元素(比ID更可靠)
表单提交依靠name属性完成模型绑定,而非ID。直接通过name选择元素设置值,避免ID可能出现的命名冲突:function anullUser() { $("input[name='Mod']").val("2"); $("#depForm").submit(); }检查是否缺失CSRF令牌
ASP.NET Core默认拦截无CSRF令牌的POST请求,会直接导致模型绑定失败。确保form中包含防伪造令牌:@Html.AntiForgeryToken()或在form标签上添加
asp-antiforgery="true",让框架自动生成令牌。AJAX提交的正确写法(如果需要)
若尝试AJAX提交无效,需确保传递完整表单数据和CSRF令牌:function anullUser() { $("input[name='Mod']").val("2"); const formData = $("#depForm").serialize(); $.ajax({ url: "@Url.Action("Users", "Post")", type: "POST", data: formData, headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() }, success: function(res) { // 处理成功逻辑 } }); }
关键提醒:
模型绑定失败最常见的原因是表单提交路径错误、元素选择器未命中目标或缺失CSRF令牌,按上述步骤逐一排查即可解决问题。
内容的提问来源于stack exchange,提问作者Dilovar Mudinov
相关产品推荐
相关产品推荐

