ASP.NET MVC 2中的DataAnnotations - 阻止MVC将RequiredAttribute应用于不可为空的DateTime等属性

jww*_*art 5 asp.net-mvc data-annotations

我试图创建一个自定义版本的RequiredAttribute来替换内置的,我已经让它适用于具有字符串值的属性,但是具有DateTime或整数的属性,默认的RequiredAttribute似乎是自动应用的(如果财产不可为空!)

我的问题是我希望能够使用我的自定义必需验证器指定一个DateTime属性,该验证器从资源文件中获取错误消息(我不想告诉RequiredAttribute资源文件的类型和每次我申请它都是关键.这就是为什么我要定制一个.)

如何防止框架将所需属性应用于DateTime和int等类型的属性,而不将它们更改为可为空.

谢谢

jww*_*art 10

找到了!我把它放在Global.asax.cs文件中

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
Run Code Online (Sandbox Code Playgroud)

DataAnnotationsModelValidatorProvider类有一个名为"AddImplicitRequiredAttributeForValueTypes"的静态属性,默认情况下必须为true,并将其设置为false可解决问题.

(对于任何试图做同样事情的人来说,我都在这里记录)