Rumah > pembangunan bahagian belakang > C++ > Bagaimana untuk Melaksanakan Pengesahan Bersyarat dalam ASP.NET MVC Menggunakan Anotasi Data dan IValidableObject?

Bagaimana untuk Melaksanakan Pengesahan Bersyarat dalam ASP.NET MVC Menggunakan Anotasi Data dan IValidableObject?

Patricia Arquette
Lepaskan: 2025-01-08 17:47:40
asal
453 orang telah melayarinya

How to Implement Conditional Validation in ASP.NET MVC Using Data Annotations and IValidatableObject?

Melaksanakan Pengesahan Bersyarat dengan Anotasi Data MVC ASP.NET dan IValidatableObject

Ciri pengesahan bersyarat ASP.NET MVC membolehkan anda menentukan peraturan pengesahan yang bergantung pada sifat model lain. Ini tidak ternilai apabila medan tertentu memerlukan pengesahan hanya dalam keadaan tertentu.

Contoh Pengesahan Bersyarat: Senario Praktikal

Mari kita menggambarkan dengan model Person yang mengandungi Name, IsSenior dan kelas Senior bersarang dengan sifat Description. Kami akan memerlukan Senior.Description hanya jika IsSenior adalah benar.

Berikut ialah model yang menggunakan anotasi data (pendekatan yang lebih ringkas tetapi kurang fleksibel):

<code class="language-csharp">public class Person
{
    [Required(ErrorMessage = "*")]
    public string Name { get; set; }

    public bool IsSenior { get; set; }

    public Senior Senior { get; set; }
}

public class Senior
{
    [Required(ErrorMessage = "*")]  // This validation is not conditionally applied yet.
    public string Description { get; set; }
}</code>
Salin selepas log masuk

Dan coretan paparan yang sepadan (ilustratif):

<code class="language-html">@Html.LabelFor(m => m.Name)
@Html.EditorFor(m => m.Name)
@Html.ValidationMessageFor(m => m.Name)

@Html.LabelFor(m => m.IsSenior)
@Html.EditorFor(m => m.IsSenior)
@Html.ValidationMessageFor(m => m.IsSenior)

@Html.LabelFor(m => m.Senior.Description)
@Html.EditorFor(m => m.Senior.Description)
@Html.ValidationMessageFor(m => m.Senior.Description) </code>
Salin selepas log masuk

Pengesahan Bersyarat Lanjutan dengan IValidatableObject

Untuk pengesahan bersyarat yang lebih mantap, ASP.NET MVC menawarkan antara muka IValidatableObject. Melaksanakan kaedah Validate membolehkan anda mentakrifkan logik pengesahan berdasarkan keadaan keseluruhan model.

Inilah model Person yang dipertingkatkan menggunakan IValidatableObject:

<code class="language-csharp">public class Person : IValidatableObject
{
    public string Name { get; set; }
    public bool IsSenior { get; set; }
    public Senior Senior { get; set; }

    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
    {
        if (IsSenior && string.IsNullOrEmpty(Senior?.Description))
            yield return new ValidationResult("Description is required for senior citizens.");
    }
}</code>
Salin selepas log masuk

Pendekatan ini menawarkan lebih fleksibiliti dan kawalan ke atas peraturan pengesahan. Untuk butiran komprehensif, rujuk dokumentasi Microsoft yang berkaitan (cari "IValidableObject" dan ASP.NET MVC). Contoh di atas menggunakan operator tanpa syarat (?.) untuk keselamatan tambahan.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pengesahan Bersyarat dalam ASP.NET MVC Menggunakan Anotasi Data dan IValidableObject?. 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