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

Razor视图foreach循环中Form配合SweetAlert提交删除ID异常怎么解决

问题原因

  1. ID重复冲突:你在@foreach循环中给每个删除表单都设置了固定的id="pop",但HTML规范要求页面内ID必须唯一,浏览器只会识别第一个出现的对应ID的表单。你点击其他行的删除按钮时,实际提交的是第一行的表单ID,自然会出现ID位数不对、值错误的问题,这也符合你「非Form提交时ID传递正常」的表现——跳转用的a标签没有依赖ID选择器,每个a的路由参数都是单独生成的。
  2. 表单选择器拼写错误:JS代码中选择表单用的是$('#ppp'),但HTML里表单ID是pop,拼写不匹配,就算没有循环问题也找不到正确的表单。

解决方案

直接修改JS逻辑,点击删除按钮时通过相对路径获取当前按钮所属的表单,不需要依赖ID选择器即可精准匹配每行对应的删除表单:

修改后的JS代码

$(".ajax_delete1").on("click", function validateForm(event) {
  event.preventDefault(); 
  // 直接找当前点击按钮最近的父级form,无需依赖ID
  var form = $(this).closest('form'); 
  swal({
      title: "آیا از پاک کردن این ایتم مطمئن هستید",
      text: "این ایتم اگر حذف شود دیگر قابل بازگردانی نیست!",
      icon: "warning",
      showCancelButton: true,
      dangerMode: true,
      confirmButtonColor: '#DD6B55',
      confirmButtonText: "حذف",
      cancelButtonText: "انصراف",
    })
    .then((willDelete) => {
      if (willDelete) {
        form.submit();
      } else {
        swal("فایل شما پاک نشد!");
      }
    });
});

可选优化

可以删除循环里form的固定id属性,避免后续其他逻辑因为ID重复出现异常:

<form asp-controller="Home" asp-action="RemoveProject" asp-route-id="@item.projectID" method="post">
  <a class="fa fa-trash-o ajax_delete1" style="font-size: 28px; color: red; cursor: pointer;"></a>
</form>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:27:04