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

ASP.NET中如何通过ViewBag传递LINQ拼接值到下拉列表?

解决建议

问题出在SelectList未指定要读取的文本字段,导致默认调用匿名对象的ToString()方法,显示出{ Name = harvey specter }这类格式的内容。可以通过两种方式修复:

方式一:修改视图代码

在SelectList构造函数中明确指定文本字段(和值字段,这里两者都用Name):

<div class="form-group">
   <select class="form-control" asp-items="new SelectList(ViewBag.TranslatorList, "Name", "Name")">
       <option>Select Translator</option>
   </select>
</div>

方式二:在控制器中直接创建SelectList

提前在控制器里构造好SelectList,视图直接使用:

控制器代码修改:

var translators = bidsinfo1.Select(x => new { Name = x.TranslatorFirstName + " " + x.TranslatorLastName} ).ToList();
ViewBag.TranslatorList = new SelectList(translators, "Name", "Name");

视图代码修改:

<div class="form-group">
   <select class="form-control" asp-items="@ViewBag.TranslatorList">
       <option>Select Translator</option>
   </select>
</div>

原理:SelectList通过指定DataTextField和DataValueField,会读取匿名对象的Name属性值来填充下拉选项的显示文本和对应值,而不再使用对象的默认字符串表示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:55:20