【发布时间】:2013-08-30 13:43:48
【问题描述】:
我有这样的枚举。
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"))
【问题讨论】:
-
这可能会让您入门。 stackoverflow.com/questions/13499747/…
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
好的,谢谢。我会记住这一点的。
标签: c# asp.net asp.net-mvc asp.net-mvc-4 enums