利用数据注解在ASP.NET MVC中实现组合属性长度的自定义验证
自定义验证属性在同时验证多个属性时提供了灵活性。在ASP.NET MVC中,您可以使用ValidationAttribute
基类创建自定义验证属性,并使用[Validate]
属性将它们应用于模型中的属性。
组合属性长度的自定义验证属性
要验证多个字符串属性的组合长度,您可以创建如下自定义验证属性:
<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) + Convert.ToString(value).Length; if (totalLength < MinLength) { return new ValidationResult(ErrorMessageString); } return ValidationResult.Success; } }</code>
在模型中的使用
要将此验证应用于您的模型,您可以使用[Validate]
属性修饰其属性之一:
<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属性的组合长度大于或等于指定的最小长度(此示例中为20)。如果验证失败,则会在验证摘要中显示相应的错误消息(如ErrorMessage
参数中定义)。
以上是如何在 ASP.NET MVC 中实现组合属性长度的自定义验证?的详细内容。更多信息请关注PHP中文网其他相关文章!