首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DataTypeAttribute是DefaultModelBinder类的验证属性吗?

DataTypeAttribute是DefaultModelBinder类的验证属性吗?
EN

Stack Overflow用户
提问于 2011-11-12 20:15:24
回答 2查看 1.2K关注 0票数 1

我刚刚注意到DataTypeAttribute类是从System.ComponentModel.DataAnnotations.ValidationAttribute继承的。

就ASP.NET MVC DefaultModelBinder类而言,DataTypeAttribute是一个验证属性吗?在简单的英语中,ModelBinder是否根据DataTypeAttribute验证对象?

例如,如果我将DataType属性指定为DataType.EmailAddress,它将验证电子邮件地址还是该属性仅为对象提供元数据。

更新

我发现了一个类似的问题:

DataTypeAttribute验证在MVC2中有效吗?

因此,根据这一点,它不是用作验证属性。那么,如果它不是一个验证属性,那么为什么要从System.ComponentModel.DataAnnotations.ValidationAttribute继承它呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-11-22 23:05:11

DataTypeAttribute本身不包含任何验证逻辑。

它从ValidationAttribute派生的原因是,您可以创建一个新的自定义数据类型类,它既是一个DataType,也是一个验证,所有这些都封装在一个。这是.NET不允许多重继承的一个不幸的副作用。

所以,是的,这是一个验证器..。默认情况下不进行验证。它在耐心地等着你做重活。:)

实际上,如果您查看MVC 3期货,您将看到我们利用它来创建新的自定义验证器,其中我们知道jQuery已经能够提供客户端验证逻辑,并且添加了镜像服务器端验证逻辑(并保留了模板化的DataType好处)。

票数 4
EN

Stack Overflow用户

发布于 2011-11-12 20:47:12

基于MVC3源代码,DataTypeAttribute的唯一用途是填充ModelMetadata.DataTypeName 属性 .And,该属性仅供EditorFor/DisplayFor模板生成使用。所以你是对的,这与验证无关。所以我不知道为什么它是从ValidationAttribute继承来的。也许框架作者保留了它以供将来使用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8107252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档