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

ASP.NET MVC中DropdownList显示类名而非属性值的问题求助

解决DropdownList显示类名而非属性值的问题

兄弟,你这个问题其实很好解决——你在View里直接输出了整个Engineers对象,而不是它的EngineerName属性,C#默认会对对象调用ToString()方法,所以就显示了类的全名。

直接修复:修改View中的Option代码

把你View里的这行代码:

<option value="@Title" >@Title </option>

改成明确指定EngineerName属性:

<option value="@Title.EngineerName" >@Title.EngineerName </option>

这样下拉框的显示文本和value值都会正确显示工程师的名字。

优化Controller代码(可选)

你现在的Controller代码可以用LINQ简化,不用手动foreach循环,一行搞定:

model.EngineerNameList = allData
    .Select(x => x.EngineerName)
    .Distinct()
    .Select(name => new Engineers { EngineerName = name })
    .ToList();

这样代码更简洁,可读性也更好。

推荐:使用MVC内置的Html辅助方法(更规范)

ASP.NET MVC提供了Html.DropDownListFor辅助方法,能更方便地生成下拉列表,还能自动绑定选中值,推荐你这么用:

  1. 首先在你的Model里添加一个接收选中值的属性:
public string SelectedEngineerName { get; set; }
  1. 然后在View里替换原来的select标签:
<div class="form-group">
    <label for="Engineer">Select Engineer:</label>
    @Html.DropDownListFor(m => m.SelectedEngineerName, 
        new SelectList(Model.EngineerNameList, "EngineerName", "EngineerName"),
        "Select an Engineer",
        new { @class = "form-control", onchange = "this.form.submit()" })
</div>

这里SelectList的第二个参数是option的value值对应的属性,第三个是显示文本对应的属性,这样就完全不用手动循环了,代码更简洁也不容易出错。

内容的提问来源于stack exchange,提问作者Colin O'Donoghue

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:55:10