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

ASP.NET MVC:列表按钮ID传单个模态框再到Controller的实现问题

解决模态框传值与复用问题

咱们先一步步拆解你的问题,先搞定ID传不到Controller的核心问题,再优化模态框的复用方案~

1. 修复ID传递失败的问题

你当前的deleteConfirm函数里$.post的语法写错了!括号位置不对,导致参数根本没传到后端,而且也没处理请求成功后的页面跳转。把函数改成这样:

function deleteConfirm() {
    $.post(url, { Id: myLinkId }, function() {
        // 请求成功后自动跳回Index页面
        window.location.href = '@Url.Action("Index", "Control")';
    }).fail(function() {
        // 可选:给用户提示删除失败的情况
        alert("删除失败,请稍后重试");
    });
}

之前的错误写法是$.post(url), { Id: myLinkId };,把参数写在了AJAX请求的括号外面,导致后端完全接收不到Id参数。修正后参数会正确传递,请求成功后也会自动跳转回列表页。

2. 优雅复用单个模态框(告别全局变量/多模态框)

其实不用单独声明全局变量,咱们可以把需要的Id和请求URL直接存在模态框元素的data属性里,既干净又不会有全局变量污染的问题。

第一步:修改删除按钮的点击事件

$(document).on("click", ".delete-Link", function () {
    var linkId = $(this).data('id');
    var requestUrl = $(this).data('request-url');
    // 把数据存到模态框的data属性中
    $("#deleteLink").data({
        linkId: linkId,
        requestUrl: requestUrl
    });
});

第二步:修改模态框的确认按钮逻辑

先把模态框里的确认按钮加上ID:

<button type="button" class="btn btn-primary" id="confirmDeleteBtn">Yes</button>

然后绑定点击事件,直接从模态框的data里取数据:

$(document).on("click", "#confirmDeleteBtn", function() {
    var modal = $("#deleteLink");
    var targetId = modal.data('linkId');
    var targetUrl = modal.data('requestUrl');
    
    $.post(targetUrl, { Id: targetId }, function() {
        window.location.href = '@Url.Action("Index", "Control")';
        modal.modal('hide'); // 成功后隐藏模态框
    }).fail(function() {
        alert("删除失败,请稍后重试");
        modal.modal('hide');
    });
});

这样不管列表有多少条数据,只需要一个模态框就够了。点击不同的删除按钮时,对应的Id和URL会被临时存在模态框里,确认删除时再取出来用,完全不用全局变量,代码更优雅。

小补充:Controller端规范

记得给你的Delete方法加上[HttpPost]特性,因为咱们用的是POST请求,这样能避免GET请求误触发删除操作:

[HttpPost]
public ActionResult Delete(int Id) { 
    UserLinks links = new UserLinks(); 
    links.delete(Id, User.Identity.Name); 
    return RedirectToAction("Index"); 
}

内容的提问来源于stack exchange,提问作者Tolga Açış

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:21:54