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

如何在ASP.NET Core的data-ajax-success中同时获取响应数据与表单元素?

解决方案:同时获取Unobtrusive AJAX的响应数据与表单元素

这个问题我之前也碰到过,ASP.NET的Unobtrusive AJAX其实给data-ajax-success的回调函数提供了内置参数,刚好能满足你同时拿到响应数据和触发表单的需求,具体修改步骤如下:

1. 修改页面表单的data-ajax-success属性

去掉原来的deleteItem(this),直接指定函数名即可,Unobtrusive AJAX会自动传递必要的参数:

<form method="post" asp-route-id="@item.Id" data-ajax="true" data-ajax-confirm="Are you sure?" data-ajax-success="deleteItem">
    <input type="submit" value="delete" asp-route-id="@item.Id" class="dropdown-item" />
</form>

2. 更新JavaScript回调函数

Unobtrusive AJAX的成功回调会自动传入四个参数,我们可以利用关键参数来实现需求:

function deleteItem(response, status, xhr, form) {
    // 判断后端返回的状态码是否为成功(对应你后端定义的Status=0)
    if (response.Status === 0) {
        // 通过表单元素找到对应的表格行并隐藏(或直接删除)
        $(form).closest('tr').css({ "display": "none" });
        // 如果你想直接删除行而不是隐藏,可以用:
        // $(form).closest('tr').remove();
    } else {
        // 失败时可以给用户提示
        alert(`删除失败:${response.Massage}`);
    }
}

参数说明

Unobtrusive AJAX传入回调的四个参数顺序固定:

  • response:后端返回的JSON数据(就是你后端代码里的JsonType对象)
  • status:响应状态字符串(比如"success")
  • xhr:XMLHttpRequest实例对象
  • form:触发本次AJAX请求的表单DOM元素

这样修改后,就只有当后端删除操作成功(返回Status=0)时,才会隐藏页面上对应的表格行,完美解决了你之前“删除失败也隐藏行”的问题。

内容的提问来源于stack exchange,提问作者R-S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 08:48:11