0Pricing
C# Academy · Pelajaran

Aturan Kustom dan Kondisional

Bangun logika validasi yang kompleks dan kondisional.

Aturan Kustom dan Kondisional adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.

Di Luar Validator Bawaan

Validasi di dunia nyata sering memerlukan logika khusus: nilai yang harus lolos pemeriksaan domain atau aturan yang hanya berlaku dalam kondisi tertentu. FluentValidation mendukung keduanya dengan Must, When, dan tipe validator khusus.

Predikat Must

Must menerima predikat yang mengembalikan true ketika nilainya valid. Ini adalah cara paling sederhana untuk menyatakan logika apa pun secara langsung.

RuleFor(c => c.Username)
    .Must(name => !name.Contains(" "))
    .WithMessage("Username cannot contain spaces.");

Must dengan Akses ke Seluruh Objek

Salah satu bentuk Must memberikan objek induk beserta nilai properti, sehingga Anda dapat melakukan pemeriksaan lintas properti.

RuleFor(o => o.DiscountedPrice)
    .Must((order, discounted) => discounted <= order.OriginalPrice)
    .WithMessage("Discounted price cannot exceed original price.");

Aturan Kondisional dengan When

When menerapkan aturan hanya jika suatu kondisi terpenuhi. Dalam contoh ini, alamat pengiriman hanya diwajibkan untuk pesanan fisik.

RuleFor(o => o.ShippingAddress)
    .NotEmpty()
    .When(o => o.RequiresShipping);

Pengubah Unless

Unless adalah kebalikan dari When: aturan dijalankan kecuali kondisinya bernilai benar.

RuleFor(o => o.CouponCode)
    .NotEmpty()
    .Unless(o => o.IsGift);

Mengelompokkan Kondisi

Bungkus beberapa aturan dalam satu blok When(...) agar kondisi yang sama dapat digunakan secara rapi untuk semuanya.

When(o => o.RequiresShipping, () =>
{
    RuleFor(o => o.ShippingAddress).NotEmpty();
    RuleFor(o => o.PostalCode).NotEmpty();
});

Logika Khusus Asinkron dengan MustAsync

Jika pemeriksaan Anda memerlukan basis data atau API, gunakan MustAsync. Validasi model dengan ValidateAsync.

RuleFor(u => u.Email)
    .MustAsync(async (email, cancellation) =>
        !await _repository.EmailExistsAsync(email))
    .WithMessage("Email is already registered.");

Menulis Validator Khusus yang Dapat Digunakan Kembali

Untuk logika yang digunakan kembali di beberapa proyek, tulislah metode ekstensi pada IRuleBuilder. Dengan demikian, aturan khusus menjadi validator utama yang dapat dirangkai.

public static class CustomValidators
{
    public static IRuleBuilderOptions<T, string> ValidSlug<T>(
        this IRuleBuilder<T, string> rule)
    {
        return rule.Matches("^[a-z0-9-]+$")
            .WithMessage("Must be a lowercase slug.");
    }
}

Menggunakan Validator Khusus

Setelah ditentukan, ekstensi tersebut dapat dirangkai seperti validator bawaan, sehingga validator Anda tetap ekspresif.

RuleFor(p => p.Slug).NotEmpty().ValidSlug();

Metode Custom untuk Kendali Penuh

Untuk hasil yang kompleks, Custom memungkinkan Anda menambahkan kegagalan validasi secara imperatif menggunakan sebuah konteks.

RuleFor(o => o.Items).Custom((items, context) =>
{
    if (items.Count == 0)
        context.AddFailure("An order must contain at least one item.");
});

Mode Cascade

Secara bawaan, semua validator dalam sebuah rangkaian tetap dijalankan meskipun salah satunya gagal. Atur CascadeMode.Stop untuk berhenti pada kegagalan pertama dan menghindari pemeriksaan yang berulang atau tidak aman.

RuleFor(c => c.Email)
    .Cascade(CascadeMode.Stop)
    .NotEmpty()
    .EmailAddress();

Pemeriksaan Singkat

Uji aturan kondisional dan aturan khusus.

Ringkasan

Aturan khusus dan kondisional membuat FluentValidation fleksibel: Must untuk predikat langsung, dengan varian yang memberikan akses ke seluruh objek; When/Unless untuk kondisi; blok When yang dikelompokkan; MustAsync untuk pemeriksaan I/O; ekstensi IRuleBuilder yang dapat digunakan kembali; metode imperatif Custom; serta mode Cascade untuk mengendalikan alur evaluasi.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Aturan Kustom dan Kondisional” gratis?

Ya — teks lengkap “Aturan Kustom dan Kondisional” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Aturan Kustom dan Kondisional”?

Bangun logika validasi yang kompleks dan kondisional. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C# Academy?

Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Aturan Kustom dan Kondisional” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?

Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Validasi Anotasi Data
  2. Aturan FluentValidation
  3. Aturan Kustom dan Kondisional
  4. Mengintegrasikan Validasi dengan API
← Kembali ke C# Academy