Peraturan FluentValidation
Tulis pengesah yang ekspresif dengan sintaks lancar.
Peraturan FluentValidation ialah pelajaran Akademi C# percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Akademi C#, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Akademi C# merangkumi sejumlah 4 pelajaran.
Mengapa FluentValidation
FluentValidation ialah pustaka .NET yang popular untuk memindahkan peraturan pengesahan keluar daripada model dan ke dalam kelas validator khusus. Peraturan dinyatakan melalui API yang mudah dibaca dan boleh dirangkaikan, supaya model kekal kemas dan peraturan mudah diuji.
dotnet add package FluentValidation
dotnet add package FluentValidation.DependencyInjectionExtensionsKelas Asas AbstractValidator
Anda menulis validator dengan mewarisi daripada AbstractValidator<T>, iaitu T ialah model yang anda sahkan. Peraturan ditakrifkan dalam pembina.
using FluentValidation;
public class CustomerValidator : AbstractValidator<Customer>
{
public CustomerValidator()
{
// rules go here
}
}Mentakrifkan Peraturan Pertama Dengan RuleFor
RuleFor memilih sifat melalui lambda, kemudian anda merangkaikan validator padanya. NotEmpty() menolak nilai null, rentetan kosong dan nilai lalai.
public class CustomerValidator : AbstractValidator<Customer>
{
public CustomerValidator()
{
RuleFor(c => c.Name).NotEmpty();
}
}Merangkaikan Berbilang Validator
Setiap RuleFor boleh merangkaikan beberapa validator. Validator tersebut dijalankan mengikut susunan dan semuanya mesti lulus. Kod ini hampir kelihatan seperti sebuah ayat.
RuleFor(c => c.Name)
.NotEmpty()
.MinimumLength(2)
.MaximumLength(50);Validator Terbina Dalam
FluentValidation disertakan dengan banyak validator: NotNull, NotEmpty, EmailAddress, Length, InclusiveBetween, GreaterThan, Matches (regex) dan banyak lagi.
RuleFor(c => c.Email).NotEmpty().EmailAddress();
RuleFor(c => c.Age).InclusiveBetween(18, 120);
RuleFor(c => c.Phone).Matches(@"^\+?[0-9]{7,15}$");Mesej Ralat Tersuai
Gunakan WithMessage untuk menggantikan mesej lalai. Anda boleh menyisipkan ruang letak seperti {PropertyName} dan {PropertyValue}.
RuleFor(c => c.Email)
.NotEmpty().WithMessage("Email is required.")
.EmailAddress().WithMessage("{PropertyValue} is not a valid email.");Kod Ralat dan Keterukan Tersuai
Selain mesej, anda boleh melampirkan WithErrorCode yang boleh dibaca mesin dan WithSeverity (Ralat, Amaran, Maklumat) supaya pelanggan boleh memberikan tindak balas yang berbeza.
RuleFor(c => c.Name)
.NotEmpty()
.WithErrorCode("NAME_REQUIRED")
.WithSeverity(Severity.Error);Mengesahkan Objek Bersarang
Gunakan SetValidator untuk menggunakan semula validator bagi objek anak, sekali gus memastikan peraturan kekal modular.
public class OrderValidator : AbstractValidator<Order>
{
public OrderValidator()
{
RuleFor(o => o.Customer).SetValidator(new CustomerValidator());
}
}Mengesahkan Koleksi
RuleForEach menggunakan peraturan 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 boleh memanggil validator secara terus dan memeriksa hasilnya. ValidationResult mendedahkan IsValid dan senarai 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);
}
}Pengesahan Tak Segerak
Apabila sesuatu peraturan memerlukan operasi I/O seperti semakan pangkalan data, gunakan ValidateAsync dan validator async seperti MustAsync, yang akan diterokai dalam pelajaran peraturan tersuai.
ValidationResult result = await validator.ValidateAsync(customer);Semakan Pantas
Uji asas FluentValidation anda.
Ringkasan
FluentValidation meletakkan peraturan dalam kelas AbstractValidator<T>. RuleFor menyasarkan sifat, kemudian anda merangkaikan validator terbina dalam seperti NotEmpty, EmailAddress dan InclusiveBetween. Sesuaikan maklum balas dengan WithMessage, WithErrorCode dan WithSeverity, gunakan semula logik dengan SetValidator dan RuleForEach, dan jalankan peraturan melalui Validate/ValidateAsync.
Pelajari C# dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 93
- Pelajaran
- 346
Soalan Lazim
Adakah pelajaran “Peraturan FluentValidation” percuma?
Ya — teks penuh “Peraturan FluentValidation” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Akademi C#, tingkat taraf kepada CoddyKit PRO. Kursus Akademi C# merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “Peraturan FluentValidation”?
Tulis pengesah yang ekspresif dengan sintaks lancar. Anda berlatih Akademi C# menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Akademi C#?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Akademi C# di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.
Berapa lamakah pelajaran “Peraturan FluentValidation” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Akademi C# ini?
Ya. Setiap pelajaran Akademi C# menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Pengesahan Anotasi Data
- Peraturan FluentValidation
- Peraturan Tersuai dan Bersyarat
- Mengintegrasikan Pengesahan dengan API