我有这样的枚举。
public enum Gender
{
Man = 1,
Woman = 2
}
我使用 ASP MVC4 在这样的下拉列表中显示选择。
@Html.DropDownListFor(model => model.Gender, new SelectList(Enum.GetValues(typeof(Namespace.Models.Enum.Gender))))
这就像一个魅力,它在下拉列表中显示男人/女人。我的问题是我想在不同的上下文中在这些枚举上显示不同的名称。
就像你是妈妈或爸爸的情况一样。我想使用性别枚举作为基础,但显示 Mom/Dad instad of Man/Woman。
另一个上下文是男孩/女孩,我仍然想使用性别枚举,但显示不同的文本。
这有可能吗?
编辑 我使用了凯文的解决方案,还添加了另一种这样的扩展方法。
public static List<KeyValuePair<string, int>> GetValues(IGenderStrategy genderStrategy)
{
Dictionary<string, int> arr = new Dictionary<string, int>();
foreach (Gender g in System.Enum.GetValues(typeof(Gender)))
arr.Add(g.ToValue(genderStrategy), (int)g);
return arr.ToList();
}
在我看来,我是这样使用的。
@Html.DropDownListFor(model => model.Gender, new SelectList(Chores.Models.Enum.EnumExtentions.GetValues(new Chores.Models.Enum.ParentStrategy()), "value", "key"))