Setting MaximumLength on a StringLengthAttribute in code
我正在处理一些代码,这些代码在视图模型上使用DataAnnotation属性,并在某些情况下以编程方式覆盖某些属性。
在各种类型的
将
将
在周围都是公共场所时,有什么理由使这处房产脱颖而出?我可以通过编程方式更改
由于设置
最后一个选择是实际编写您自己的
1 2 3 4 5 | public override bool IsValid(object value) { int num = (value == null) ? 0 : ((string)value).Length; return value == null || (num >= this.MinimumLength && num <= this.MaximumLength); } |
模仿这一点,但在
假设您正在使用自定义ModelMetadataValidatorProvider,如我在MVC3中如何在TemplateEditor中向模型属性添加验证属性中概述的那样,在重写GetValidators方法的过程中,可以遍历基本方法返回的验证器,然后删除当前的StringLengthAttribute,并用所需的MaxLength值替换您的StringLengthAttribute。
由于此代码是特定于ViewModel的,因此请让您的ViewModel实现IValidateableObject接口并在其中进行验证。
1 2 3 4 5 6 7 8 9 | <wyn> public IEnumerable Validate(ValidationContext validationContext) { if (YourField.Length == 2) { yield return new ValidationResult("ut oh!!"); } } </wyn> |