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

MVC中@Html.DropDownList显示ID而非名称的问题求助

解决@Html.DropDownList显示ID而非名称的问题

要让下拉列表显示ID_KH的值而非名称,核心是手动构建指定显示文本的SelectList,具体步骤如下:

1. 在控制器中构建正确的数据源

假设你的关联表实体名为KhachHang(可根据实际表名修改),在对应Action中从数据库获取数据并构建SelectList,将ID_KH同时设为下拉项的值和显示文本:

// 从数据库查询关联表的ID_KH数据
var khachHangList = db.KhachHang.Select(item => new { item.ID_KH }).ToList();
// 构建SelectList:Value和Text都绑定ID_KH字段
ViewBag.ID_KH = new SelectList(khachHangList, "ID_KH", "ID_KH");

2. 修改视图代码(推荐用强类型写法更安全)

你可以保留原有的DropDownList写法,也推荐用强类型的DropDownListFor避免名称匹配错误:

<div class="form-group">
    @Html.LabelFor(model => model.ID_KH, "ID_KH", htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-10">
        @Html.DropDownListFor(model => model.ID_KH, (SelectList)ViewBag.ID_KH, htmlAttributes: new { @class = "form-control" })
        @Html.ValidationMessageFor(model => model.ID_KH, "", new { @class = "text-danger" })
    </div>
</div>

问题原因说明

你之前用@Html.DropDownList("ID_KH", null, ...)时,MVC会自动从ViewBag/ViewData中查找名为ID_KH的SelectList,但这个自动生成的SelectList大概率是把关联表的名称字段设为了显示文本,所以才会显示名称而非ID。手动指定SelectList的Value和Text字段后,就能强制下拉框显示ID了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:04:51