EnumDataType 属性在 ASP.NET MVC 中起什么作用?
我一直在我的一些模型对象上使用 string
属性来表示枚举。我只使用字符串,因为 Entity Framework Code First 尚不支持枚举。无论如何,我注意到 System.ComponentModel.DataAnnotations
中有一个名为 EnumDataType
的属性。我尝试设置此属性,但它似乎没有任何影响。
我应该提到,我的最终目标是在“创建”或“编辑”视图中为任何枚举类型显示适当的下拉列表。我认为也许 EnumDataType
会让自动脚手架场景中的事情变得更容易,但我不确定情况是否如此。
三个问题:
EnumDataType
在 ASP.NET MVC 中有用途吗?- 如果是,它有什么作用?
- 我是否需要将模型属性设置为
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:
- Does
EnumDataType
have a purpose in ASP.NET MVC? - If yes, what does it do?
- Do I need my model properties to be
int
(instead ofstring
) to take advantage ofEnumDataType
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
目前仅 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.我找到的最佳解决方案是结合 这个博客和这个答案。这使得视图和模型都非常具有可读性和可维护性。
请参阅我的此处的完整答案。
型号:
视图:
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:
View:
MVC 3 没有任何逻辑来处理
EnumDataTypeAttribute
。MVC 3 does not have any logic to handle
EnumDataTypeAttribute
.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.