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

ASP.NET Core MVC Razor视图填充ComboBox出现空项的问题

解决下拉框选项为空的问题

我懂你遇到的麻烦了——明明已经循环了ViewBag.Locations里的数据,下拉框的选项却全是空的,根本看不到目的地名称对吧?

先看你原来的代码问题出在哪:你用了<option>的label属性来指定显示文本,但这个属性在ASP.NET Core的表单渲染场景下,有时候不会像预期那样生效。正确的做法是把显示文本直接放在<option>标签的内部,而不是依赖label属性。

修正后的手动循环写法

<label asp-for="FlightDestID"> Select Destination </label>
<select asp-for="FlightDestID">
    @foreach (var l in (List<Locations>)ViewBag.Locations)
    {
        <option value="@l.ID">@l.Name</option>
    }
</select>

更简洁的ASP.NET Core Tag Helper写法

其实ASP.NET Core提供了更便捷的asp-items标签辅助器,不用手动写foreach循环,直接绑定数据源就行,代码更简洁也不容易出错:

<label asp-for="FlightDestID"> Select Destination </label>
<select asp-for="FlightDestID" 
        asp-items="@(new SelectList(ViewBag.Locations, "ID", "Name"))">
</select>

这里SelectList的参数分别是:数据源、作为value的属性名(ID)、作为显示文本的属性名(Name),框架会自动帮你生成所有选项。

这样修改后,下拉框就能正确显示每个Location的名称,同时value绑定对应的ID了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:01:51