在ASP.NET MVC中,您可以轻松地使用StringLength数据注解来验证单个属性的长度。但是,在某些情况下,您可能需要验证多个字符串属性的组合长度。本文介绍了使用自定义数据注解实现此目标的推荐MVC方法。
要验证组合长度,请创建一个自定义验证属性:
<code class="language-csharp">public class CombinedMinLengthAttribute : ValidationAttribute { public CombinedMinLengthAttribute(int minLength, params string[] propertyNames) { this.PropertyNames = propertyNames; this.MinLength = minLength; } public string[] PropertyNames { get; private set; } public int MinLength { get; private set; } protected override ValidationResult IsValid(object value, ValidationContext validationContext) { var properties = this.PropertyNames.Select(validationContext.ObjectType.GetProperty); var values = properties.Select(p => p.GetValue(validationContext.ObjectInstance, null)).OfType<string>(); var totalLength = values.Sum(x => x?.Length ?? 0) + (value?.ToString()?.Length ?? 0); //处理空值情况 if (totalLength < this.MinLength) { return new ValidationResult(this.FormatErrorMessage(validationContext.DisplayName)); } return ValidationResult.Success; } }</code>
在您的视图模型中,使用自定义属性修饰所需的属性:
<code class="language-csharp">public class MyViewModel { [CombinedMinLength(20, "Bar", "Baz", ErrorMessage = "Foo、Bar和Baz属性的组合最小长度应大于20")] public string Foo { get; set; } public string Bar { get; set; } public string Baz { get; set; } }</code>
通过此设置,如果Foo、Bar和Baz属性的组合长度小于指定的最小长度,则模型验证将失败并显示在属性中定义的错误消息。 代码中添加了空值处理,避免因属性值为null引发异常。 错误信息也进行了更友好的本地化处理。
以上是如何验证 ASP.NET MVC 中多个属性的组合长度?的详细内容。更多信息请关注PHP中文网其他相关文章!