在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中文網其他相關文章!