【问题标题】:Get contents of enum to a dropdownlist将枚举的内容获取到下拉列表
【发布时间】:2012-04-25 22:06:55
【问题描述】:

我正在尝试将我的项目从 Enum 转换为下拉列表。请帮助

public enum Colors{ red,blue,green,yellow,orange,white,black,Teal,Custom }


 @Html.DropDownList("SelectedColourId", Model.ColourList, "(Select one Color)")

我的 ViewModel 在下面

  myPageViewModel:BasicViewModel
    {
 .....
     public IEnumerable<SelectListItem> ColourList{ get; set; }
.........
    }

我尝试过类似的东西

myViewModel.ColourList = Enum.GetNames(typeof(Colors)).ToArray()
                .Select(e => new SelectListItem() { Text = e.item, Value = e.itemindex });

但我不知道如何获取 itemText 及其对应的 Index 。它的抛出错误

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3 c#-4.0 enums


    【解决方案1】:

    在控制器中,使用 Enum GetNames 静态方法和 Linq 初始化 ColourList 数组:

    myPageViewModel.ColourList = Enum.GetNames(typeof(Colors))
        .Select(c => new SelectListItem() { Text = c, Value = c })
        .ToArray();
    

    【讨论】:

    • @Millar gah,忘了你不能在构造函数中设置值。以上应该现在可以工作了。
    • 但是有没有办法让我获得价值的项目索引?
    • @Millar 当然,只需使用 Value = (int)Enum.Parse(typeof(Colors), c)
    【解决方案2】:

    要从枚举的下拉列表中添加选项,请使用以下代码:

       foreach (DropDownEnum enumValue in Enum.GetValues(typeof(DropDownEnum)))
    
            {
    
                model.SortOptions.Add(new SelectListItem()
                {
                    Text = enumValue.ToString(),
                    Value = url+enumValue.ToString(),
                    Selected = false
    
                });
    
            }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多