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
相关产品推荐
相关产品推荐

