Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

DataAnnotations in ASP.NET MVC 2 - Stop MVC from applying RequiredAttribute to Non-nullable DateTime etc. properties

Im trying to create a custom version of the RequiredAttribute to replace the built in one and I've got it working for properties that have strings values, but with properties that are DateTime or integer for example, the default RequiredAttribute seems to be applied automatically (IF the property is not nullable!)

My problem is that i want to be able to specify a DateTime property as required using my custom required validator which gets the error message from a resources file (I don't want to have to tell the RequiredAttribute the type of the resource file and the key every time i apply it. That is why I'm making a custom one.)

How can i prevent the framework from applying the required attribute to properties of type DateTime and int etc without changing them to nullable.

Thanks

like image 372
jwwishart Avatar asked Mar 21 '10 23:03

jwwishart


2 Answers

Found it! I put this in the Global.asax.cs file

DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;

The DataAnnotationsModelValidatorProvider class has a static property called "AddImplicitRequiredAttributeForValueTypes" which by default must be true, and setting it to false fixed the problem.

(For anyone trying to do the same sort of things that finds this entry, I'm documenting it here)

like image 89
jwwishart Avatar answered Nov 15 '22 03:11

jwwishart


I have RTM installed and dont have the AddImplicitRequiredAttributeForValueTypes property...

like image 40
Sam Avatar answered Nov 15 '22 05:11

Sam