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

