You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core编辑视图Save按钮无响应,无法触发控制器方法

问题排查与修复方案

核心问题1:HTML表单嵌套违规

HTML规范不允许表单嵌套,你的主表单<form asp-action="Edit">内部又嵌套了一个@using (Html.BeginForm()),这会导致浏览器无法正确识别主表单的提交事件,点击Save按钮时浏览器不会触发主表单的提交请求。

核心问题2:Checkbox未绑定模型

你的VAT注册状态复选框没有通过asp-for绑定到Contragent.VAT_Registration,导致该字段的值无法提交到控制器,同时可能触发模型验证失败(如果该字段是必填项)。

核心问题3:HTML结构不完整

代码中<div class="row gx-3 mb-3">标签未闭合,HTML结构错误会干扰表单的正常功能。


具体修复步骤

1. 移除表单嵌套,改用AJAX处理内部提交

将内部的嵌套表单替换为AJAX请求,保留“Зареди данни”按钮的功能,同时不破坏主表单结构:

<!-- 替换原有的嵌套表单代码 -->
<div class="col-md-3">
    <label asp-for="Contragent.VAT_Number" class="small mb-1">ДДС номер</label>
    <input id="vat_number" asp-for="Contragent.VAT_Number" name="checkEIK" class="form-control" type="text" readonly />
    <button type="button" class="btn btn-outline-primary w-100" onclick="loadVIESData()">Зареди данни</button>
    <span asp-validation-for="Contragent.VAT_Number" class="text-danger"></span>
</div>

然后在Scripts区块添加AJAX代码:

@section Scripts {
    @{await Html.RenderPartialAsync("_ValidationScriptsPartial");}
    <script>
        function loadVIESData() {
            var eik = $("#EIK").val();
            $.ajax({
                url: '@Url.Action("CreateVIES", "YourControllerName")', // 替换为你的实际控制器名称
                type: "POST",
                data: { checkEIK: $("#vat_number").val(), eik: eik }, // 根据控制器参数调整
                success: function(result) {
                    $("#vat_number").val(result); // 根据接口返回结果处理赋值逻辑
                },
                error: function() {
                    alert("加载数据失败");
                }
            });
        }
    </script>
}

2. 修复Checkbox的模型绑定

将复选框改为绑定到模型字段,确保值能正确提交:

<div class="col-md-2">
    <label asp-for="Contragent.VAT_Registration" class="control-label">Регистрация по ДДС*</label>
    <input type="checkbox" class="form-check-input" asp-for="Contragent.VAT_Registration" onclick="functionRegToVAT()">
</div>

3. 补全HTML结构,闭合未结束的标签

在VAT号码字段的</div>后添加</div>闭合row容器:

<!-- 原VAT号码字段的div结束后 -->
</div>
</div> <!-- 闭合row gx-3 mb-3 -->

4. 明确主表单的提交方法

编辑操作应该使用POST方法,为主表单添加asp-method="Post":

<form asp-action="Edit" asp-method="Post">

额外检查点

  • 检查控制器的Edit Action是否接收POST请求,参数是否与模型匹配:
[HttpPost]
public IActionResult Edit(Contragents_Countries_Roles_Categories model)
{
    // 编辑逻辑处理
}
  • 打开浏览器开发者工具(F12),切换到Network标签,点击Save按钮后查看是否有请求发出,若有错误可查看具体的错误信息。

内容的提问来源于stack exchange,提问作者Анатоли Велков

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 11:47:31