枚举有多个描述我有这样一个枚举。publicenumGender{Man=1,Woman=2}我正在使用ASPMVC4来显示这样的下拉选项。@Html.DropDownListFor(model=>model.Gender,newSelectList(Enum.GetValues(typeof(Namespace.Models.Enum.Gender))))这就像一个魅力,它显示了男人/女人的下拉列表。我的问题是,我希望在不同的上下文中显示不同的名称。如果你是妈妈或爸爸,这就像一个背景。我想使用性别枚举作为基础,但显示ma/femalemom/dadinstad。另一个背景是男孩/女孩,我仍然想使用性别枚举,但显示不同的文本。这可能吗?编辑我使用了凯文的解决方案并添加了另一个这样的扩展方法。publicstaticListGetValues(IGenderStrategygenderStrategy){Dictionaryarr=newDictionary();foreach(System.Enum.GetValues(typeof(Gender))中的性别g)arr.Add(g.ToValue(genderStrategy),(int)g);返回arr.ToList();就我而言,我用过这个。@Html.DropDownListFor(model=>model.Gender,newSelectList(Chores.Models.Enum.EnumExtentions.GetValues(newChores.Models.Enum.ParentStrategy()),"value","key"))我喜欢@RakotVT使用扩展方法的答案,但进一步扩展它,因为您需要为每个不太好的案例使用新的扩展方法。我认为Strategy模式的变体在这里可能会更好(http://www.dofactory.com/Patterns/PatternStrategy.aspx)显示名称(性别性别);}publicclassParentStrategy:IGenderStrategy{publicstringDisplayName(Gender性别){stringretVal=String.Empty;开关(性别){caseGender.Man:retVal="Dad";休息;caseGender.Woman:retVal="妈妈";休息;默认值:抛出新异常(“未找到性别”);}返回值;}}publicstaticclassEnumExtentions{publicstaticstringToValue(thisGendere,IGenderStrategygenderStategy){returngenderStategy.DisplayName(e);}}publicclassTest{publicTest(){Gender.Man.ToValue(newParentStrategy());尝试向您的枚举添加一个扩展类。这是此类的示例。publicstaticclassEnumExtentions{publicstaticstringToChildValue(thisGendere){stringretVal=string.Empty;switch(e){caseGender.Man:retVal="男孩";休息;caseGender.Woman:retVal="女孩";休息;}返回值;}publicstaticstringToParentValue(thisGendere){stringretVal=string.Empty;switch(e){caseGender.Man:retVal="爸爸";休息;caseGender.Woman:retVal="妈妈";休息;}返回值;}}不知道,如果这是最好的方式,但是如下:@functions{IEnumerableGetGenderSelectList(GenderContextgenderContext){returnEnum.GetValues(typeof(Namespace.Models.Enum.Gender)).ToList().ConvertAll(x=>newSelectListItem(){Value=x.ToString(),Text=GetGenderDescription(x,genderContext)});}stringGetGenderDescription(Gendergender,GenderContextgenderContext){switch(GenderContext){caseChildren:returngender==Man?“男孩”:“女孩”;case父母:返回性别==男人?“爸妈”;默认值:returngender.ToString();}}}@Html。DropDownListFor(model=>model.Gender,GetGenderSelectList(model.GenderContext))这里'GenderContext'是另一个枚举显然你不需要在你的页面函数中使用这些函数-你可以在进入之前将项目列表添加到ViewBag视图中间。以上就是C#学习教程:枚举有多个说明,分享所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处: