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

如何在ASP.NET Core中实现AJAX校验错误的表单字段内联展示

问题根因

你的提交按钮放在<form>标签内部,点击时会触发表单的默认提交行为,导致页面刷新跳转,因此AJAX返回的错误信息还没渲染,页面就已经重新加载了。

修复方案

1. 阻止表单默认提交行为

给点击事件添加preventDefault()取消默认提交,页面就会停留在当前页。

2. 内联错误展示优化

你可以直接复用表单字段旁自带的asp-validation-for提示容器展示错误,不用额外使用只读输入框,符合内联展示的需求。

完整修改后的代码

JS部分修改

$("#button").click(function (e) {
    // 新增:阻止表单默认提交行为
    e.preventDefault();

    // 可选:提交前清空上一次的错误提示
    $("span[data-valmsg-for='OrderQuantity']").text("");
    $("#errorMessage").val("");

    var orderedQuantity = $("#txt").val();
    var orderId = $("#orderId").val();
    var data = {
        orderId: orderId,
        orderedQuantity: orderedQuantity
    };

    $.ajax({
        type: 'POST',
        url: '@Url.Action("EditItem", "Orders")',
        data: data,
        dataType: "json",
        success: function (result) {
            if (result.status === "NotAvailable") {
                // 把错误写到OrderQuantity字段旁的验证提示span中,实现内联展示
                $("span[data-valmsg-for='OrderQuantity']").text("Enter a valid Quantity");
                // 如果需要保留顶部错误输入框的展示,保留下面这行即可
                // $("#errorMessage").val("Enter a valid Quantity");
            }
            else {
                var url = '@Url.Action("Index", "Orders")';
                window.location.href = url + "?custEmail=xyz@rrr.org";
            }
        },
        error: function (error) {
            alert(error);
        }
    });
});

修改完成后校验失败时页面不会跳转,错误信息会直接展示在OrderQuantity输入框的下方。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:54:03