Pengesahan bersyarat dalam .NET Menggunakan IvalidatableObject
Antara muka
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>
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>
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!