ASP.NET Core 5 MVC 视图中如何获取表格勾选行的Empid?
解决获取表格勾选行Empid的方案
你之前给input添加相同name属性仅能获取到第一个ID的原因是:多个同name的表单元素提交时,浏览器默认只会传递第一个值,除非你给name添加[]后缀声明为数组(比如name="selectedEmp[]"),但需要后端对应调整接收逻辑,下面给出更灵活的前端实现方案:
方案1:优先推荐(修改少量视图代码,后续取值更高效)
第一步修改视图中复选框的渲染代码,给复选框添加统一类名,直接把Empid存入value属性:
<td><input type="checkbox" class="emp-checkbox" value="@pxempItem.Empid" /></td>
第二步用JS取值即可,以下两种任选:
原生JavaScript实现
function getSelectedEmpIds() { const checkedList = document.querySelectorAll('.emp-checkbox:checked'); const empIdList = Array.from(checkedList).map(item => item.value); // empIdList就是所有选中的Empid数组,可直接用于后续逻辑 return empIdList; }
jQuery实现(项目已引入jQuery时使用)
function getSelectedEmpIds() { const empIdList = $('.emp-checkbox:checked').map(function() { return $(this).val(); }).get(); return empIdList; }
方案2:无需修改现有视图代码
如果不方便调整现有视图的结构,可以直接遍历勾选框所在行提取第二列的Empid:
function getSelectedEmpIds() { const checkedBoxes = document.querySelectorAll('#tableOp tbody input[type="checkbox"]:checked'); const empIdList = Array.from(checkedBoxes).map(box => { const currentRow = box.closest('tr'); return currentRow.querySelector('td:nth-child(2)').textContent.trim(); }); return empIdList; }
内容的提问来源于stack exchange,提问作者Miguel V
相关产品推荐
相关产品推荐

