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

ASP.NET Core获取表格同组SelectListItem每行选中值及行标识

ASP.NET Core 表格行下拉框值与行标识关联提交方案

问题根因

  • 现有代码的<select>标签未设置name属性,表单提交时不会携带该控件的选中值
  • 未按照ASP.NET Core模型绑定规则命名字段,导致后端无法建立选中值和对应行Question_ID的映射关系

具体实现

1. 视图层改造

核心规则:利用ASP.NET Core 对字典类型的默认模型绑定规则,将下拉框的name属性设置为[后端参数名][Question_ID]格式,提交后框架会自动组装为键值对结构。
整个表格需要包裹在form标签内指定提交地址和提交方式,修正后的代码如下:

<form method="post" asp-action="SubmitQuestionRate">
    <table class="table">
        <!-- 原有表头逻辑保持不变 -->
        <thead>
            <tr>
                <th>问题标题</th>
                <th>答案</th>
                <th>问题类型</th>
                <th>可信度评级</th>
            </tr>
        </thead>
        <tbody>
            @foreach (var item in allQuestion)
            {
                <tr>
                    <td>@item.Question_Title</td>
                    <td>@item.Answere1</td>
                    <td>@item.Question_type</td>
                    <td>
                        <!-- 核心:新增name属性,以Question_ID作为字典键 -->
                        <select 
                            id="trueRate[@item.Question_ID]" 
                            name="trueRate[@item.Question_ID]" 
                            class="form-control">
                            @foreach (var rate in TrueRate)
                            {
                                <option value="@rate.Value">@rate.Text</option>
                            }
                        </select>
                    </td>
                </tr>
            }
        </tbody>
    </table>
    <button type="submit" class="btn btn-primary mt-3">提交评级</button>
</form>

2. 后端接收逻辑

直接使用字典类型作为Action参数即可,框架会自动完成绑定,字典的Key为行唯一标识Question_ID,Value为该行下拉框的选中值:

[HttpPost]
public IActionResult SubmitQuestionRate(Dictionary<int, int> trueRate)
{
    // 遍历字典即可拿到所有行的提交数据
    foreach (var (questionId, selectedRate) in trueRate)
    {
        // 执行业务逻辑,比如将questionId对应的评级selectedRate存入数据库
    }
    return View();
}

适配说明

  • 如果Question_ID是字符串/Guid类型,将字典Key类型替换为对应类型即可
  • 如果评级值是字符串格式,将字典Value类型替换为string
  • 如果需要提交更多行字段(比如问题标题、备注等),可以定义专用Dto类,用集合索引的命名规则绑定,字典方案适合当前仅需要提交ID和选中值的轻量场景

注意:不要随意修改name属性的格式,ASP.NET Core默认模型绑定对字典类型的识别规则就是[参数名][键值],格式错误会导致绑定为空。

内容的提问来源于stack exchange,提问作者emad.b

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:48:18