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

时间:2018-12-09 17:16:30

标签: c# enums dropdown asp.net-core-2.1 razor-pages

我有以下枚举

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");

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

谢谢..

2 个答案:

答案 0 :(得分:1)

最简单的方法是在选择标记帮助器中使用Html.GetEnumSelectList<TEnum>方法:

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

在此处查看有关在Razor页面中使用选择标签帮助程序和枚举的更多信息:https://www.learnrazorpages.com/razor-pages/tag-helpers/select-tag-helper#enumerations

答案 1 :(得分:0)

尝试此代码

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