将枚举绑定到下拉列表

时间:2018-11-29 22:47:35

标签: asp.net-mvc asp.net-core-mvc html.dropdownlistfor

我有一个基本的性别枚举,男性和女性的赋值分别为1、2。这段代码在以前的mvc中对我有用,但是在asp.net核心中却出现错误

有什么问题吗? 谢谢

@Html.DropDownListFor(c => c.Gender, Enum.GetValues(typeof(Accounts.i_EF.Accounts.Gender)).Cast<Accounts.i_EF.Accounts.Gender>().Select(c => SelectListItem { Text = c.ToString(), Value = c.ToString() } ))

2 个答案:

答案 0 :(得分:0)

如果您使用的是MVC6,则可以使用一种方法GetEnumSelectList来创建下拉菜单。

<select asp-for="Gender" asp-items="Html.GetEnumSelectList<Gender>()">
</select>

答案 1 :(得分:0)

对于您之前的代码,请尝试更改为

@Html.DropDownListFor(c => c.Gender, Enum.GetValues(typeof(Gender)).Cast<Gender>().Select(c => new SelectListItem { Text = c.ToString(), Value = c.ToString() } ))
  

确保您的项目引用的是“ Microsoft.NET.Sdk.Web”,并且“ PreserveCompilationContext”属性未设置为false。

为此,请尝试清理并重建项目。如果不起作用,请重新启动VS。