データ注釈を使用して、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>
モデルで使用
この検証をモデルに適用するには、そのプロパティの 1 つを [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 中国語 Web サイトの他の関連記事を参照してください。