データ注釈を使用して、ASP.NET MVC の複数の属性を組み合わせた長さを検証します
ASP.NET MVC では、StringLength
注釈を使用して 1 つのプロパティの長さを検証するのが一般的です。ただし、複数のプロパティを組み合わせた長さを確認する必要がある状況もあります。この記事では、データ アノテーションを使用してこの目標を達成するための 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 < MinLength) { return new ValidationResult(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>
モデルが検証されると、カスタム プロパティの IsValid
メソッドが呼び出され、指定されたプロパティの結合された長さが、装飾されたプロパティの値とともに指定された最小長と比較して検証されます。 改良されたコードでは、null 値の処理が追加され、潜在的な NullReferenceException
が回避されます。
以上がデータ注釈を使用して ASP.NET MVC の複数のプロパティの合計の長さを検証する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。