FluentValidation एक .NET लाइब्रेरी है जो स्ट्रॉन्गली-टाइप्ड वैलिडेशन नियम बनाने के लिए उपयोग की जाती है। यह वैलिडेशन नियम बनाने के लिए फ्लुएंट इंटरफेस और लैम्ब्डा एक्सप्रेशन्स का उपयोग करती है।
MaxLength Validator
यह सुनिश्चित करता है कि किसी विशेष स्ट्रिंग प्रॉपर्टी की लंबाई निर्दिष्ट मान से अधिक न हो।
- केवल स्ट्रिंग प्रॉपर्टीज पर मान्य
- स्ट्रिंग फॉर्मेट आर्ग्स:
{PropertyName},{MaxLength},{TotalLength},{PropertyValue}
MinLength Validator
यह सुनिश्चित करता है कि किसी विशेष स्ट्रिंग प्रॉपर्टी की लंबाई निर्दिष्ट मान से कम न हो।
- केवल स्ट्रिंग प्रॉपर्टीज पर मान्य
- स्ट्रिंग फॉर्मेट आर्ग्स:
{PropertyName},{MinLength},{TotalLength},{PropertyValue}
उदाहरण
using FluentValidation;
using FluentValidation.Results;
static void Main(string[] args)
{
List<string> errors = new List<string>();
PersonModel person = new PersonModel
{
FirstName = "TestUser444", // 11 वर्ण - 7 की मैक्स लिमिट से अधिक
LastName = "TTT" // 3 वर्ण - 5 की मिन लिमिट से कम
};
PersonValidator validator = new PersonValidator();
ValidationResult results = validator.Validate(person);
if (!results.IsValid)
{
foreach (ValidationFailure failure in results.Errors)
{
errors.Add(failure.ErrorMessage);
}
}
foreach (var item in errors)
{
Console.WriteLine(item);
}
Console.ReadLine();
}
public class PersonModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
public class PersonValidator : AbstractValidator<PersonModel>
{
public PersonValidator()
{
RuleFor(p => p.FirstName)
.MaximumLength(7)
.WithMessage("MaximumLength must be 7 for {PropertyName} (was {TotalLength})");
RuleFor(p => p.LastName)
.MinimumLength(5)
.WithMessage("MinimumLength must be 5 for {PropertyName} (was {TotalLength})");
}
}
आउटपुट
MaximumLength must be 7 for FirstName (was 11)
MinimumLength must be 5 for LastName (was 3)
संयुक्त लंबाई वैलिडेशन
public class PersonValidator : AbstractValidator<PersonModel>
{
public PersonValidator()
{
// लंबाई रेंज (Min और Max दोनों)
RuleFor(p => p.FirstName)
.Length(2, 50) // MinimumLength(2) + MaximumLength(50) के बराबर
.WithMessage("{PropertyName} must be between 2 and 50 characters (was {TotalLength})");
// शर्तों के साथ
RuleFor(p => p.LastName)
.MinimumLength(2)
.When(p => !string.IsNullOrEmpty(p.LastName)) // केवल तभी जब खाली न हो
.WithMessage("LastName must be at least 2 characters if provided");
}
}
अन्य उपयोगी स्ट्रिंग वैलिडेटर्स
RuleFor(p => p.Email)
.NotEmpty()
.EmailAddress()
.MaximumLength(255);
RuleFor(p => p.PhoneNumber)
.Matches(@"^\+?[1-9]\d{1,14}$") // E.164 फॉर्मेट
.WithMessage("Invalid phone number format");
RuleFor(p => p.Username)
.Matches("^[a-zA-Z0-9_]+$")
.WithMessage("Username can only contain letters, numbers, and underscore");
पैकेज इंस्टॉलेशन
<PackageReference Include="FluentValidation" Version="11.9.0" />
// या
dotnet add package FluentValidation
ASP.NET Core में एकीकरण
// Program.cs / Startup.cs
builder.Services.AddControllers()
.AddFluentValidation(fv => fv.RegisterValidatorsFromAssemblyContaining<Program>());
// या मैन्युअल पंजीकरण
builder.Services.AddTransient<IValidator<PersonModel>, PersonValidator>();