0Pricing
C# Academy · Pelajaran

Aturan FluentValidation

Tulis validator ekspresif dengan sintaks fluent.

Aturan FluentValidation adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 2 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.

Mengapa FluentValidation?

FluentValidation adalah pustaka .NET populer yang memindahkan aturan validasi dari model ke kelas validator khusus. Aturan dinyatakan melalui API yang mudah dibaca dan dapat dirangkai, sehingga model tetap bersih dan aturan mudah diuji.

dotnet add package FluentValidation
dotnet add package FluentValidation.DependencyInjectionExtensions

Kelas Dasar AbstractValidator

Anda menulis validator dengan mewarisi AbstractValidator<T>, dengan T sebagai model yang divalidasi. Aturan ditentukan di dalam konstruktor.

using FluentValidation;

public class CustomerValidator : AbstractValidator<Customer>
{
    public CustomerValidator()
    {
        // rules go here
    }
}

Menentukan Aturan Pertama dengan RuleFor

RuleFor memilih properti melalui lambda, lalu Anda merangkai validator untuk properti tersebut. NotEmpty() menolak nilai null, string kosong, dan nilai bawaan.

public class CustomerValidator : AbstractValidator<Customer>
{
    public CustomerValidator()
    {
        RuleFor(c => c.Name).NotEmpty();
    }
}

Merangkai Beberapa Validator

Setiap RuleFor dapat merangkai beberapa validator. Validator tersebut dijalankan secara berurutan dan semuanya harus lulus. Hasilnya hampir terbaca seperti sebuah kalimat.

RuleFor(c => c.Name)
    .NotEmpty()
    .MinimumLength(2)
    .MaximumLength(50);

Validator Bawaan

FluentValidation menyediakan banyak validator: NotNull, NotEmpty, EmailAddress, Length, InclusiveBetween, GreaterThan, Matches (ekspresi reguler), dan masih banyak lagi.

RuleFor(c => c.Email).NotEmpty().EmailAddress();
RuleFor(c => c.Age).InclusiveBetween(18, 120);
RuleFor(c => c.Phone).Matches(@"^\+?[0-9]{7,15}$");

Pesan Kesalahan Khusus

Gunakan WithMessage untuk mengganti pesan bawaan. Anda dapat menyisipkan penampung seperti {PropertyName} dan {PropertyValue}.

RuleFor(c => c.Email)
    .NotEmpty().WithMessage("Email is required.")
    .EmailAddress().WithMessage("{PropertyValue} is not a valid email.");

Kode Kesalahan dan Tingkat Keparahan Khusus

Selain pesan, Anda dapat menambahkan WithErrorCode yang dapat dibaca mesin dan WithSeverity (Kesalahan, Peringatan, Info) agar klien dapat memberikan respons yang berbeda.

RuleFor(c => c.Name)
    .NotEmpty()
    .WithErrorCode("NAME_REQUIRED")
    .WithSeverity(Severity.Error);

Memvalidasi Objek Bertingkat

Gunakan SetValidator untuk menggunakan kembali validator pada objek anak, sehingga aturan tetap modular.

public class OrderValidator : AbstractValidator<Order>
{
    public OrderValidator()
    {
        RuleFor(o => o.Customer).SetValidator(new CustomerValidator());
    }
}

Memvalidasi Koleksi

RuleForEach menerapkan aturan pada setiap item dalam koleksi.

public class OrderValidator : AbstractValidator<Order>
{
    public OrderValidator()
    {
        RuleForEach(o => o.Items)
            .ChildRules(item => item.RuleFor(i => i.Quantity).GreaterThan(0));
    }
}

Menjalankan Validator Secara Manual

Anda dapat memanggil validator secara langsung dan memeriksa hasilnya. ValidationResult menyediakan IsValid dan daftar Errors.

var validator = new CustomerValidator();
ValidationResult result = validator.Validate(customer);

if (!result.IsValid)
{
    foreach (var error in result.Errors)
    {
        Console.WriteLine(error.PropertyName + ": " + error.ErrorMessage);
    }
}

Validasi Asinkron

Jika sebuah aturan memerlukan I/O, seperti pemeriksaan basis data, gunakan ValidateAsync dan validator asinkron seperti MustAsync, yang akan dibahas dalam pelajaran tentang aturan khusus.

ValidationResult result = await validator.ValidateAsync(customer);

Pemeriksaan Singkat

Uji dasar-dasar FluentValidation.

Ringkasan

FluentValidation menempatkan aturan di dalam kelas AbstractValidator<T>. RuleFor menargetkan sebuah properti, lalu Anda merangkai validator bawaan seperti NotEmpty, EmailAddress, dan InclusiveBetween. Sesuaikan umpan balik dengan WithMessage, WithErrorCode, dan WithSeverity, gunakan kembali logika dengan SetValidator dan RuleForEach, lalu jalankan aturan melalui Validate/ValidateAsync.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Aturan FluentValidation” gratis?

Ya — teks lengkap “Aturan FluentValidation” 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 FluentValidation”?

Tulis validator ekspresif dengan sintaks fluent. 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 2 dari 4.

Berapa lama pelajaran “Aturan FluentValidation” 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