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

Asp.Net Core 结合Ajax实现模态框表单验证提交问题咨询

问题根因

你当前代码失效的核心原因是$.post是异步请求,Validate_Register函数不会等待ajax请求返回结果,就会直接执行末尾的return true,所以不管校验结果如何,表单都会直接提交,校验逻辑完全不生效。

修正方案

第一步:调整表单结构

给表单添加唯一ID,同时补充mobile_User参数对应的表单控件(你的Register接口需要接收该参数,之前的代码缺失):

<form asp-controller="Account" asp-action="Register" id="registerForm">
<div class="form-area" id="Register-Form" hidden>
    <div class="form-group">
    <input type="password" name="user_Password" class="input-field" maxlength="6" id="Register-NewPassword">
    </div>
    <div class="form-group">
    <!-- 补充手机号字段,替换value为实际存储的用户手机号 -->
    <input type="hidden" name="mobile_User" id="Login_Mobile" value="你的用户手机号">
    <input type="number" class="input-field" maxlength="6" autocomplete="off" id="Register-ActiveCode"> 
    </div>
    <div class="form-group text-center">
    <button  type="submit" class="mybtn">保存</button>
    </div>
</div>
</form>

第二步:重写校验逻辑

删除原来的Validate_Register函数,改为监听表单的submit事件,先阻止默认提交,等异步校验通过后再手动提交表单:

$('#registerForm').on('submit', function(e) {
    // 先阻止表单默认提交行为
    e.preventDefault();
    // 读取校验需要的参数
    const mobile = $('#Login_Mobile').val();
    const activeCode = $('#Register-ActiveCode').val();
    
    $.post("/Account/CheckActiveCode", {
        Mobile: mobile, 
        ActiveCode: activeCode
    }, function (data) {
        if (data == 1) {
            // 校验失败,弹出错误提示
            $.alert({
                title: '错误',
                content: '激活码不正确',
                rtl: true,
                closeIcon: true,
                type: 'red',
                typeAnimated: true,
                buttons: {
                    confirm: {
                        text: '确定',
                        btnClass: 'btn-red',
                    }
                }
            });
        } else {
            // 校验通过,调用原生DOM的submit方法提交表单,不会触发二次监听
            $('#registerForm')[0].submit();
        }       
    });
});
注意事项
  • 原生DOM的submit方法不会触发jQuery绑定的submit事件,不会出现循环调用的问题
  • 不推荐把$.post改为同步请求的实现方式,同步请求会阻塞浏览器交互,用户体验很差

内容的提问来源于stack exchange,提问作者sunboy_sunboy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 09:15:02