【问题标题】:enum values in drop down list in mvc4mvc4下拉列表中的枚举值
【发布时间】:2013-06-18 06:36:38
【问题描述】:

如何在 mvc4 中使用枚举值创建下拉列表

我有一个类 Language.cs

 public enum Language {
    English = 0
}

我的财产是

public Language Language { get; set; }

我将如何通过下拉列表在我的视图中调用

【问题讨论】:

标签: c# asp.net-mvc-4


【解决方案1】:

你可以有一个视图模型:

public class MyViewModel
{
    public Language SelectedLanguage { get; set; }
    public IEnumerable<SelectListItem> Languages
    {
        get 
        {
            var languages = 
                from l in Enum.GetValues(typeof(Language))
                select new { ID = (int)d, Name = d.ToString() };
            return new SelectList(languages , "ID", "Name", this.SelectedLanguage);
        }
    }
}

然后在你看来:

@Html.DropDownListFor(x => x.SelectedLanguage, Model.Languages)

另一种可能性是编写一个自定义帮助器来封装此逻辑,如this blog post 所示。

【讨论】:

    【解决方案2】:

    这样就可以了:

    public enum Language
    {
        English,
        French,
        Spanish
    }
    
    public static class Enum
    {
        public static IEnumerable<T> GetItems<T>()
        {
            return System.Enum.GetValues(typeof(T)).Cast<T>();
        }
    }
    
    public class ViewModel
    {
        public Language Language
        {
            get;
            set;
        }
    
        public IEnumerable<SelectListItem> Languages
        {
            get
            {
                return Enum.GetItems<Language>().Select(x => new SelectListItem() { Text = x.ToString(), Value = x.ToString() });
            }
        }
    }
    

    HTML:

    @model ViewModel
    @Html.DropDownListFor(a => a.Language, Model.Languages)
    

    【讨论】:

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