Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Mengesahkan Gabungan Panjang Pelbagai Harta dalam ASP.NET MVC?

Bagaimana untuk Mengesahkan Gabungan Panjang Pelbagai Harta dalam ASP.NET MVC?

DDD
DDDasal
2025-01-16 19:37:11822semak imbas

How to Validate Combined Length of Multiple Properties in ASP.NET MVC?

Menggunakan anotasi data untuk melaksanakan pengesahan gabungan berbilang atribut ASP.NET MVC

Dalam ASP.NET MVC, anda boleh menggunakan anotasi data StringLength dengan mudah untuk mengesahkan panjang satu sifat. Walau bagaimanapun, dalam beberapa kes anda mungkin perlu mengesahkan panjang gabungan berbilang sifat rentetan. Artikel ini menerangkan pendekatan MVC yang disyorkan untuk mencapai ini menggunakan anotasi data tersuai.

Skim: Atribut pengesahan tersuai

Untuk mengesahkan panjang gabungan, buat atribut pengesahan tersuai:

<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>

Cara menggunakan

Dalam model paparan anda, hiasi sifat yang diingini dengan sifat tersuai:

<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>

Dengan tetapan ini, jika panjang gabungan sifat Foo, Bar dan Baz kurang daripada panjang minimum yang ditentukan, pengesahan model akan gagal dengan mesej ralat yang ditakrifkan dalam sifat. Pengendalian nilai null telah ditambahkan pada kod untuk mengelakkan pengecualian yang disebabkan oleh nilai atribut null. Mesej ralat juga telah disetempatkan untuk menjadi lebih mesra pengguna.

Atas ialah kandungan terperinci Bagaimana untuk Mengesahkan Gabungan Panjang Pelbagai Harta dalam ASP.NET MVC?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn