EnumDataType属性在ASP.NET MVC中的作用是什么?

dev*_*xer 9 asp.net-mvc entity-framework ef-code-first entity-framework-4.1 asp.net-mvc-3

我一直在使用string某些模型对象的属性来表示枚举.我只使用字符串,因为Entity Framework Code First中还没有枚举支持.无论如何,我注意到有一个System.ComponentModel.DataAnnotations被调用的属性EnumDataType.我尝试设置此属性,但似乎不会影响任何内容.

我应该提一下,我的最终目标是在"创建"或"编辑"视图中为任何枚举类型显示相应的下拉列表.我想也许EnumDataType会在自动脚手架的情况下让这更容易,但我不确定是这种情况.

三个问题:

  1. 是否EnumDataType有在ASP.NET MVC目的?
  2. 如果是的话,它会做什么?
  3. 我是否需要我的模型属性int(而不是string)才能利用EnumDataType

Lad*_*nka 9

EnumDataType目前仅受ASP.NET动态数据站点支持(在.NET 4.0中).您通常可以构建自己的自定义HTML帮助程序,如果它包含属性(通过反射),则会对属性进行检查,并使用链接枚举中的值为其创建下拉列表.


Nic*_*ans 5

我找到的最佳解决方案是将此博客此答案相结合.这使得视图和模型都非常易读和可维护.

在这里查看我的完整答案.

模型:

public enum YesPartialNoEnum
{
    [Description("Yes definitely")]
    Yes,
    [Description("No way!")]
    No
}

//........

[Display(Name = "The label for my dropdown list")]
public virtual Nullable<YesPartialNoEnum> CuriousQuestion{ get; set; }

//........
Run Code Online (Sandbox Code Playgroud)

视图:

@Html.ValidationMessageFor(model => model.CuriousQuestion)
Run Code Online (Sandbox Code Playgroud)