Enum.GetName显示注释

时间:2016-09-16 20:38:49

标签: c# enums annotations

我有一个枚举,我可以在EnumDropDownListFor中显示没有问题并保存枚举。现在我试图从我的记录中获取该值并显示它的DataAnnotation。我一直在尝试Enum.GetName遇到一些问题。

我的枚举 -

public enum LandOwner
    {
        [Display(Name = "Yes")]
        Y =1 ,
        [Display(Name = "No")]
        N =2,
        [Display(Name = "No Nearby Land Owner")]
        O =3
    }

    public LandOwner ownerDropDown { get; set; }

当我保存记录时,它会保存Y,N或O.

我的Enum.GetName - 其中Model.LandOwnersNotified是Y,N或O。

@Enum.GetName(typeof(OpenBurn.Models.BurnPile.LandOwner), Model.LandownersNotified)

然而,当我运行此操作时,我收到以下错误 -

传入的值必须是enum基础或枚举的基础类型,例如Int32。\ r \ nParameter name:value

当我将Enum.GetName更改为

 @Enum.GetName(typeof(OpenBurn.Models.BurnPile.LandOwner), 1)

我知道Enum.GetName的后半部分正在寻找一个int但是Model.LandownersNotified与enum的组合不提供吗?

我会收到一切的Y.我从未收到[Display(name="...")]

1 个答案:

答案 0 :(得分:0)

不能说我明白你要做什么。但@Enum.GetName旨在返回枚举值的名称。所以你无法通过枚举。

Model.LandownersNotified.ToString() -> Y,N,O
(int)Model.LandownersNotified -> 1,2,3