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 属性値によって引き起こされる例外を回避するために、Null 値の処理がコードに追加されました。 エラー メッセージもローカライズされ、より使いやすくなりました。
以上がASP.NET MVCで複数のプロパティの合計の長さを検証する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。