Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk melaksanakan pengesahan harta bersyarat menggunakan ivalidatableObject?

Bagaimana untuk melaksanakan pengesahan harta bersyarat menggunakan ivalidatableObject?

Linda Hamilton
Lepaskan: 2025-01-28 11:26:09
asal
772 orang telah melayarinya

How to Perform Conditional Property Validation Using IValidatableObject?

Menguasai Pengesahan Harta Bersyarat Menggunakan IvalidatableObject

Antara muka

adalah alat yang mantap untuk pengesahan objek yang komprehensif, terutamanya berguna untuk mengesahkan objek kompleks dengan kebergantungan antara harta. Antara muka ini membolehkan pengesahan yang bergantung kepada nilai sifat lain dalam objek yang sama. Walau bagaimanapun, menggabungkan ini dengan atribut pengesahan harta individu (seperti

atau IValidatableObject) memerlukan pertimbangan yang teliti. [Required] [Range] Kaedah

menyediakan mekanisme untuk melakukan pemeriksaan bersyarat ini. Katakan anda perlu mengesahkan

dan IValidatableObject.Validate() hanya apabila harta Prop1 adalah benar. Inilah cara anda melaksanakannya: Prop2 Enable

dengan kritikal, apabila menggunakan
<code class="language-csharp">public class ValidateMe : IValidatableObject
{
    [Required]
    public bool Enable { get; set; }

    [Range(1, 5)]
    public int Prop1 { get; set; }

    [Range(1, 5)]
    public int Prop2 { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (!Enable)
        {
            return Enumerable.Empty<ValidationResult>();
        }

        var validationResults = new List<ValidationResult>();

        // Add conditional validation rules here.  For example:
        if (Prop1 < 1 || Prop1 > 5)
        {
            validationResults.Add(new ValidationResult("Prop1 must be between 1 and 5", new[] { nameof(Prop1) }));
        }
        if (Prop2 < 1 || Prop2 > 5)
        {
            validationResults.Add(new ValidationResult("Prop2 must be between 1 and 5", new[] { nameof(Prop2) }));
        }

        return validationResults;
    }
}</code>
Salin selepas log masuk
, tetapkan parameter

ke Validator.TryValidateObject(). Ini menghalang rangka kerja daripada mengesahkan sifat secara automatik dengan atribut seperti validateAllProperties apabila false adalah palsu, memastikan logik bersyarat anda dalam [Range] mengambil keutamaan. Ini membolehkan pemisahan kebimbangan yang bersih antara pengesahan harta individu dan pengesahan bersyarat, silang harta. Enable

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan pengesahan harta bersyarat menggunakan ivalidatableObject?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan