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

发布于 2024-11-03 06:19:40 字数 548 浏览 1 评论 0原文

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

我应该提到,我的最终目标是在“创建”或“编辑”视图中为任何枚举类型显示适当的下拉列表。我认为也许 EnumDataType 会让自动脚手架场景中的事情变得更容易,但我不确定情况是否如此。

三个问题

  1. EnumDataType 在 ASP.NET MVC 中有用途吗?
  2. 如果是,它有什么作用?
  3. 我是否需要将模型属性设置为 int(而不是 string)才能利用 EnumDataType

I've been using string properties on some of my model objects to represent enums. I'm only using strings because there is not yet enum support in Entity Framework Code First. Anyway, I noticed that there is an attribute in System.ComponentModel.DataAnnotations called EnumDataType. I tried setting this attribute, but it doesn't seem to affect anything.

I should mention that my ultimate goal is to have the appropriate drop-down list appear for any enum type in a "create" or "edit" view. I thought maybe EnumDataType would make this easier in an auto-scaffolding scenario, but I'm not sure this is the case.

Three questions:

  1. Does EnumDataType have a purpose in ASP.NET MVC?
  2. If yes, what does it do?
  3. Do I need my model properties to be int (instead of string) to take advantage of EnumDataType?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

停顿的约定 2024-11-10 06:19:40

目前仅 ASP.NET 动态数据站点(在 .NET 4.0 中)支持 EnumDataType。您通常可以构建自己的自定义 HTML 帮助程序,该帮助程序将检查属性是否包含该属性(通过反射),并使用链接枚举中的值为其创建下拉菜单。

EnumDataType is currently supported only by ASP.NET Dynamic Data sites (in .NET 4.0). You can generally build your own custom HTML helper which will take the property check if it contains the attribute (by reflection) and creates drop down for it with values from the linked enum.

眼趣 2024-11-10 06:19:40

我找到的最佳解决方案是结合 这个博客这个答案。这使得视图和模型都非常具有可读性和可维护性。

请参阅我的此处的完整答案

型号:

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; }

//........

视图:

@Html.ValidationMessageFor(model => model.CuriousQuestion)

The best solution I found for this was combining this blog with this answer. This makes both the view and model very readable and maintainable.

See my full answer here.

Model:

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; }

//........

View:

@Html.ValidationMessageFor(model => model.CuriousQuestion)
苏璃陌 2024-11-10 06:19:40

MVC 3 没有任何逻辑来处理 EnumDataTypeAttribute

MVC 3 does not have any logic to handle EnumDataTypeAttribute.

明媚如初 2024-11-10 06:19:40

MVC3 或 EF4.1 CodeFirst 似乎都使用此属性来验证属性。由于当前 EF 中缺乏枚举支持,这很方便,这意味着您可以将该属性放在整数属性上。

Either MVC3 or EF4.1 CodeFirst appears to validate properties with this attribute. Handy due to the lack of enum support in EF currently, meaning you can put the attribute on an integer property.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文