ASP.NET Core中如何获取枚举列表并设置选中值?
解决ASP.NET Core枚举下拉框设置选中项的问题
有几种简单的实现方式,按优先级推荐:
1. 利用Model绑定自动选中(最推荐)
你代码里的asp-for="Category"本身就是绑定到模型的Category属性。只要在后端给模型的这个属性赋值对应的枚举值,前端下拉框会自动匹配选中,完全不用修改现有前端代码。
比如后端Action/PageModel里:
// 假设你的模型是WebsiteInfoModel var model = new WebsiteInfoModel(); // 给Category赋值要选中的枚举成员 model.Category = WebsiteInfoCategory.News; // 替换成你需要的枚举值 return View(model); // Razor Pages则用return Page();
2. 手动指定选中值(不依赖Model绑定)
如果不想通过Model绑定,或者需要在视图里直接指定,可以用Html.GetEnumSelectList的重载方法,传入要选中的枚举值:
<select asp-items="Html.GetEnumSelectList<WebsiteInfoCategory>(WebsiteInfoCategory.News)" class="form-control"></select>
注意:如果同时使用asp-for,Model绑定的值会覆盖这个手动指定的选中项,所以这种方式适合不需要绑定模型的场景。
3. 通过ViewData传递选中值
如果需要从后端传递选中值但不直接绑定到模型,可以把选中值放到ViewData里,再在视图中处理:
后端代码:
ViewData["SelectedCategory"] = WebsiteInfoCategory.Product;
前端代码:
<select asp-items="Html.GetEnumSelectList<WebsiteInfoCategory>()" class="form-control" value="@((int)ViewData["SelectedCategory"])"> </select>
内容的提问来源于stack exchange,提问作者Reza.v
相关产品推荐
相关产品推荐

