ホームページ >バックエンド開発 >C++ >データ注釈を使用して ASP.NET MVC の複数のプロパティの合計の長さを検証する方法は?

データ注釈を使用して ASP.NET MVC の複数のプロパティの合計の長さを検証する方法は?

DDD
DDDオリジナル
2025-01-16 19:26:10684ブラウズ

How to Validate the Combined Length of Multiple Properties in ASP.NET MVC using Data Annotations?

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。