利用資料註解在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中文網其他相關文章!