ホームページ > バックエンド開発 > C++ > ASP.NET MVCで結合されたプロパティの長さのカスタム検証を実装するにはどうすればよいですか?

ASP.NET MVCで結合されたプロパティの長さのカスタム検証を実装するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-16 19:32:11
オリジナル
819 人が閲覧しました

How to Implement Custom Validation for Combined Property Length in ASP.NET MVC?

データ注釈を使用して、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート