2016-09-16 117 views
0

我有一个枚举,我可以显示在EnumDropDownListFor没有问题,并保存枚举。现在我正在尝试从我的记录中获取该值并为其显示DataAnnotation。我一直在尝试Enum.GetName但是遇到了一些问题。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) 

但是,当我运行此我得到以下错误 -

传递必须是枚举碱或基础类型的枚举,如一个Int32值\ r \ n参数名称:值

当我改变Enum.GetName到

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

我知道Enum.GetName的后期部分正在寻找一个整数,但不是Model.LandownersNotified与枚举组合提供的?

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

+0

@ Html.DisplayFor()不适合你吗? – dwbartz

+0

@ Html.DisplayFor()不会给我我的枚举选项。 –

回答

0

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

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

你会使用'@ Html.DisplayFor'吗? –

+0

当数据库为LandOwnersNotified记录了'Y'时,我想在删除,编辑,详细信息和索引视图中显示'是'。 –