将枚举隐藏到core2.1剃刀页面的下拉列表中



我有以下枚举

public class Blog {
public enum BlogType {
Article,
News
}
}

我想将其转换为下拉列表,但我得到错误:无法将类型"Blog.BlogType"隐式转换为"System.Collections.Generic.IEnumerable">

我的代码:

IList<SelectListItem> list = Enum.GetValues(typeof(Blog.BlogType))
.Cast<Blog.BlogType>()
.Select(x => new SelectListItem { Text = x.ToString(), Value = ((int)x).ToString() })
.ToList();
SelectList data = new SelectList(list, "Value", "Text");

我尝试了几种解决方案,但都遇到了同样的问题。。

谢谢。。

最简单的方法是在select标记助手中使用Html.GetEnumSelectList<TEnum>方法:

<select asp-for="BlogType" asp-items="Html.GetEnumSelectList<BlogType>()">
<option value="">Pick one</option>
</select>

有关在Razor Pages中使用select标记助手和枚举的更多信息,请点击此处:https://www.learnrazorpages.com/razor-pages/tag-helpers/select-tag-helper#enumerations

试试这个代码

Html.DropDownListFor(o => o.EnumProperty, Enum.GetValues(typeof(Blog)).Cast<Blog>().Select(x => new SelectListItem { Text = x.ToString(), Value = ((int)x).ToString() }))