StringLengthAttribute doesn't seem to be working

前端 未结 2 1119
臣服心动
臣服心动 2020-12-31 13:07

Here is my Test class with data annotations:

class Test
{
  [Required, StringLength(10)]
  public string MyProperty { get; set; }
}

Here is

相关标签:
2条回答
  • 2020-12-31 13:27

    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

    0 讨论(0)
  • 2020-12-31 13:41

    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.

    0 讨论(0)
提交回复
热议问题