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

如何绑定ASP.NET Core表格内同行输入框与按钮以更新数据库

方案1:每行独立表单实现(推荐)

利用HTML原生表单的提交规则,给每一行的按钮和输入框绑定到同一个独立表单,提交时只会传递当前行的字段,无需修改现有后端逻辑。

前端循环代码修改如下:

@foreach (var item in Model.Approvals)
{
    <tr>
        <td>@item.ApprovalReviewer</td>
        <!-- 其余原有表格列保持不变 -->
        <td>                           
            <!-- 给当前行表单设置唯一ID -->
            <form id="approve-form-@item.Key" asp-action="Approve" asp-controller="Dashboard" method="post" style="margin:0">
                <input type="hidden" asp-route-id="@item.Key" />
                <!-- 传递后端需要的ECRNumber字段 -->
                <input type="hidden" asp-for="Approval.ECRNumber" value="@Model.Approval.ECRNumber" />
                <button type="submit">Approve</button>
            </form>
        </td>
        <td>
            <!-- 通过form属性将输入框和当前行的表单关联,无需把输入框放在form标签内部 -->
            <input asp-for="Approval.ChangeReviewer" value="@item.ChangeReviewer" form="approve-form-@item.Key"/>
        </td>                                         
}

该方案完全使用原生HTML能力,无兼容性问题,不需要额外编写JavaScript代码,改造成本极低。


方案2:JavaScript绑定实现

如果不想调整现有DOM结构,可以通过JS监听按钮点击事件,动态获取同行输入框的值后提交:

第一步:给元素加标识类

<!-- 按钮增加class -->
<button class="approve-btn" asp-action="Approve" asp-route-id="@item.Key" asp-controller="Dashboard">Approve</button>
<!-- 输入框增加class -->
<input class="reviewer-input" asp-for="Approval.ChangeReviewer" value="@item.ChangeReviewer"/>

第二步:添加JS逻辑

document.addEventListener('DOMContentLoaded', () => {
    // 绑定所有审核按钮的点击事件
    document.querySelectorAll('.approve-btn').forEach(btn => {
        btn.addEventListener('click', e => {
            e.preventDefault();
            // 定位到当前按钮所在的行
            const currentRow = btn.closest('tr');
            // 获取同行输入框的值
            const changeReviewer = currentRow.querySelector('.reviewer-input').value;
            const key = btn.getAttribute('asp-route-id');
            // 获取全局的ECRNumber值
            const ecrNumber = document.querySelector('input[name="Approval.ECRNumber"]').value;

            // 构造表单提交
            const tempForm = document.createElement('form');
            tempForm.method = 'POST';
            tempForm.action = '/Dashboard/Approve';

            // 追加需要的字段
            const keyField = document.createElement('input');
            keyField.name = 'key';
            keyField.value = key;
            tempForm.appendChild(keyField);

            const reviewerField = document.createElement('input');
            reviewerField.name = 'Approval.ChangeReviewer';
            reviewerField.value = changeReviewer;
            tempForm.appendChild(reviewerField);

            const ecrField = document.createElement('input');
            ecrField.name = 'Approval.ECRNumber';
            ecrField.value = ecrNumber;
            tempForm.appendChild(ecrField);

            document.body.appendChild(tempForm);
            tempForm.submit();
        })
    })
})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 05:09:02