Here is my Test class with data annotations:
class Test
{
[Required, StringLength(10)]
public string MyProperty { get; set; }
}
Here is
Thanks for posting this. I posted a bug on Microsoft Connect for this issue. I assume that they are incorrectly skipping a System.String property as it is not a value type because they do not do a deep/recursive validation without the "validateAllProperties" parameter.
Here's the bug link if you're interested: https://connect.microsoft.com/VisualStudio/feedback/details/672247/system-componentmodel-dataannotations-validator-does-not-validate-stringlengthattribute-unless-validateallproperties-specified
It's a bit non-intuitive, but changing
Validator.ValidateObject(test, context);
to
Validator.ValidateObject(test, context, true);
solves the problem. The third argument is bool validateAllProperties
. I'm not sure why the [Required]
attribute was previously being enforced while the [StringLength]
wasn't, but at least it all works now.