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

C#中如何将字典Value绑定为下拉框的Key值?

解决下拉框Key/Value统一为学生名称的问题

控制器代码修改

你只需要调整SelectList的创建逻辑,把Value字段和显示文本字段都指定为学生名称即可,有两种实现方式:

方案1(推荐:无需转字典,更简洁)

// 直接基于学生名称集合创建SelectList,Value和Text都绑定Name属性
var GetStudentName = new SelectList(_wOService.GetName(), "Name", "Name");
ViewBag.GetStudentName = GetStudentName;

方案2(保留字典转换逻辑)

如果你坚持要通过字典中转,只需把字典的Key和Value都设为学生名称:

var GetStudentName = new SelectList(_wOService.GetName()
    .ToDictionary(us => us.Name, us => us.Name), "Key", "Value");
ViewBag.GetStudentName = GetStudentName;

原理说明

原来的代码中,你用us.ID作为字典Key(对应下拉框option的value属性),us.Name作为字典Value(对应option的显示文本)。修改后,不管是直接绑定集合还是通过字典,都让下拉框的value和显示文本统一为学生名称,这样提交表单时传递的就是名称,完全适配你的存储过程查询逻辑。

视图代码无需修改

你的CSHTML代码保持原样即可,asp-items会自动生成符合要求的下拉选项:

<select id="SearchName" name="SearchName" asp-items="@ViewBag.GetStudentName" disabled class="form-control GetStudentName">
<option value=""> Select </option>
</select>

修改后生成的下拉选项结构如下:

<option value="XYZ">XYZ</option>
<option value="PQR">PQR</option>
<option value="ASD">ASD</option>
<option value="ZXD">ZXD</option>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:06:32