如何将 Display 属性添加到外部枚举
本文关键字:外部 枚举 添加 属性 Display | 更新日期: 2023-09-27 18:11:48
>我正在对某些只有一定数量的选项的属性使用枚举(例如性别(。我使用 @Html.EnumDropDownListFor(...)
渲染这些枚举,它使用 Display
属性来正确呈现选项(这些值来自资源,因为它们需要可翻译(。
public enum Gender
{
[Display(Name = "LabelMale", ResourceType = typeof(Translation))]
Male,
[Display(Name = "LabelFemale", ResourceType = typeof(Translation))]
Female
}
但是这些枚举来自无法编辑或无法访问 System.ComponentModel.DataAnnotations
命名空间的外部项目。所以我无法将所需的Display
属性添加到这些枚举中的值中。
有同样的问题,但对于视图模型,我可以使用 MetadataType(...)
属性。
但是,这不适用于枚举。
是否有类似的解决方案,以便我可以拥有可翻译的枚举?
您可以尝试使用 TypeDesciptor 在运行时添加属性。如果asp.net-mvc
框架不使用TypeDescriptor
解析这些属性,则从框架读取这些属性时可能会出现一个问题。
但你可以试一试。