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

ASP.NET Core单表单多提交按钮无法传递ID值问题咨询

解决ASP.NET Core单表单多提交按钮传ID问题

问题原因

你当前的submit按钮不在<form>标签内部,根据HTML规范,只有表单内部的表单控件(如input、textarea等)才会被纳入提交的表单数据,外部通过Form属性关联的submit按钮,它的name和value不会自动被提交,这就是POST请求Body为空的核心原因。

可行解决方案

以下方案均满足「保留现有单表单、不创建多表单」的限制:

方案1:jQuery实现(简洁高效)

  1. 先在你的表单内添加一个隐藏的input字段,用于临时存储要提交的ID:
<form id="FormActive" action="/action_page">
  <input type="hidden" name="id" id="hiddenId" />
</form>
  1. 给所有关联该表单的submit按钮绑定点击事件,设置隐藏字段值后手动提交表单:
$('button[Form="FormActive"]').click(function(e) {
  e.preventDefault(); // 阻止按钮默认的提交行为
  $('#hiddenId').val($(this).val()); // 将当前按钮的value赋值给隐藏字段
  $('#FormActive').submit(); // 触发表单提交
});

方案2:原生JavaScript实现(无需依赖jQuery)

如果不想引入jQuery,用原生JS也能实现同样效果:

  1. 同样先在表单内添加隐藏input(同方案1的第一步)
  2. 编写原生JS绑定事件:
// 获取所有关联FormActive的submit按钮
const submitButtons = document.querySelectorAll('button[Form="FormActive"]');
submitButtons.forEach(btn => {
  btn.addEventListener('click', function(e) {
    e.preventDefault();
    // 设置隐藏字段的值为当前按钮的value
    document.getElementById('hiddenId').value = this.value;
    // 提交表单
    document.getElementById('FormActive').submit();
  });
});

效果说明

两种方案的逻辑一致:点击按钮时,先把按钮的ID值存入表单内的隐藏字段,再提交表单。这样ASP.NET Core后端就能通过[FromForm]或直接绑定模型的方式获取到id参数的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 01:35:10