我有我这样的枚举。Enum有多个描述
public enum Gender
{
Man = 1,
Woman = 2
}
而且我使用ASP MVC4在下拉菜单中显示选项。
@Html.DropDownListFor(model => model.Gender, new SelectList(Enum.GetValues(typeof(Namespace.Models.Enum.Gender))))
这工作就像一个魅力,它显示男人/女人在下拉。 我的问题是,我想在不同的上下文中显示不同名称的枚举。
就像一个环境会是如果你是一个妈妈或爸爸。我想使用性别枚举作为基础,但显示男人/女人的妈妈/爸爸instad。
另一种情况是男孩/女孩,我仍然想使用性别枚举,但显示不同的文本。
这有可能以任何方式吗?
编辑 我使用凯文的解决方案,并且还添加了另一个像这样的扩展方法。
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"))
这可能让你开始。 http://stackoverflow.com/questions/13499747/how-to-get-selectlist-to-honor-displayname-annotation-with-enums?rq=1 –
我编辑了你的标题。请参阅:“[应该在其标题中包含”标签“](http://meta.stackexchange.com/questions/19190/)”,其中的共识是“不,他们不应该”。 –
好的,谢谢。我会记住这一点。 – Martin