C# 将枚举的内容获取到dropdownlist
我正在尝试将我的项目从Enum转换为dropdownlist。请帮助C# 将枚举的内容获取到dropdownlist,c#,asp.net-mvc,asp.net-mvc-3,c#-4.0,enums,C#,Asp.net Mvc,Asp.net Mvc 3,C# 4.0,Enums,我正在尝试将我的项目从Enum转换为dropdownlist。请帮助 public enum Colors{ red,blue,green,yellow,orange,white,black,Teal,Custom } @Html.DropDownList("SelectedColourId", Model.ColourList, "(Select one Color)") 我的视图模型如下 myPageViewModel:BasicViewModel { .....
public enum Colors{ red,blue,green,yellow,orange,white,black,Teal,Custom }
@Html.DropDownList("SelectedColourId", Model.ColourList, "(Select one Color)")
我的视图模型如下
myPageViewModel:BasicViewModel
{
.....
public IEnumerable<SelectListItem> ColourList{ get; set; }
.........
}
但是我不知道如何获取itemText及其相应的索引。它在控制器中抛出错误,使用EnumGetNames静态方法和Linq初始化colorList数组:
myPageViewModel.ColourList = Enum.GetNames(typeof(Colors))
.Select(c => new SelectListItem() { Text = c, Value = c })
.ToArray();
要在enum下拉列表中添加选项,请使用以下代码:
foreach (DropDownEnum enumValue in Enum.GetValues(typeof(DropDownEnum)))
{
model.SortOptions.Add(new SelectListItem()
{
Text = enumValue.ToString(),
Value = url+enumValue.ToString(),
Selected = false
});
}
@Millar gah,忘了你不能在构造函数中设置值。上面的方法现在应该可以用了。但是有没有一种方法可以用Value来获取项目的索引呢?@Millar当然,只要使用Value=(int)Enum.Parse(typeof(Colors),c)
foreach (DropDownEnum enumValue in Enum.GetValues(typeof(DropDownEnum)))
{
model.SortOptions.Add(new SelectListItem()
{
Text = enumValue.ToString(),
Value = url+enumValue.ToString(),
Selected = false
});
}