Rumah > pembangunan bahagian belakang > C++ > Bagaimana Melaksanakan Pengesahan Harta Bersyarat Menggunakan IvalidatableObject Dalam .NET?

Bagaimana Melaksanakan Pengesahan Harta Bersyarat Menggunakan IvalidatableObject Dalam .NET?

Susan Sarandon
Lepaskan: 2025-01-28 11:41:39
asal
866 orang telah melayarinya

How to Implement Conditional Property Validation Using IValidatableObject in .NET?

Pengesahan bersyarat dalam .NET Menggunakan IvalidatableObject

Antara muka menawarkan cara yang kuat untuk melakukan pengesahan objek yang komprehensif dalam .NET, termasuk cek silang. Walau bagaimanapun, secara selektif mengabaikan peraturan pengesahan berdasarkan keadaan tertentu boleh menjadi rumit. Contoh ini menunjukkan bagaimana untuk mencapai pengesahan harta bersyarat dengan berkesan.

IValidatableObject inilah coretan kod yang menggambarkan pelaksanaan:

Kod ini menggunakan harta
<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)
    {
        var results = new List<ValidationResult>();
        if (Enable)
        {
            // Conditionally validate Prop1 and Prop2
            Validator.TryValidateProperty(Prop1, new ValidationContext(this, null, null) { MemberName = "Prop1" }, results);
            Validator.TryValidateProperty(Prop2, new ValidationContext(this, null, null) { MemberName = "Prop2" }, results);

            // Add a custom conditional validation rule
            if (Prop1 > Prop2)
            {
                results.Add(new ValidationResult("Prop1 must be less than or equal to Prop2"));
            }
        }
        return results;
    }
}</code>
Salin selepas log masuk
untuk mengawal pengesahan. Jika

adalah benar, ia mengesahkan Enable dan Enable menggunakan atribut Prop1 dan peraturan adat yang memastikan Prop2 tidak lebih besar daripada [Range]. Kaedah Prop1 adalah kunci; Ia hanya menambah ralat pengesahan ke senarai Prop2 jika pengesahan gagal. Validator.TryValidateProperty() results untuk menggunakan pengesahan ini:

Menetapkan
<code class="language-csharp">public void PerformValidation()
{
    var toValidate = new ValidateMe
    {
        Enable = true,
        Prop1 = 6,  //This will cause a validation error
        Prop2 = 2
    };

    bool validateAllProperties = false; // Important: Set to false for conditional validation

    var results = new List<ValidationResult>();
    bool isValid = Validator.TryValidateObject(toValidate, new ValidationContext(toValidate, null, null), results, validateAllProperties);

    //Process validation results (results list)
}</code>
Salin selepas log masuk
ke

adalah penting. Ini menghalang validateAllProperties daripada mengatasi logik pengesahan bersyarat. Pendekatan ini menggabungkan false dengan pengesahan bersyarat untuk pengesahan objek yang fleksibel dan mantap dalam aplikasi .NET anda. Validator.TryValidateObject()

Atas ialah kandungan terperinci Bagaimana Melaksanakan Pengesahan Harta Bersyarat Menggunakan IvalidatableObject Dalam .NET?. 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