C# (.NET) में डेटा सत्यापन: पूर्ण मार्गदर्शिका
\nडेटा सत्यापन C# में विश्वसनीय और सुरक्षित अनुप्रयोगों के विकास का एक प्रमुख पहलू है। यह सुनिश्चित करता है कि इनपुट डेटा अपेक्षित प्रारूप, मानों की सीमा और व्यावसायिक नियमों के अनुरूप हो। .NET पारिस्थितिकी तंत्र में सत्यापन के लिए कई शक्तिशाली उपकरण मौजूद हैं: अंतर्निहित System.ComponentModel.DataAnnotations विशेषताओं से लेकर लचीली FluentValidation लाइब्रेरी तक। इस लेख में हम कोड उदाहरणों के साथ दोनों दृष्टिकोणों पर विस्तार से चर्चा करेंगे।
1. DataAnnotations के माध्यम से अंतर्निहित सत्यापन
\nSystem.ComponentModel.DataAnnotations नामस्थान विशेषताओं का एक सेट प्रदान करता है जिसे मॉडल वर्गों के गुणों पर लागू किया जा सकता है। यह सत्यापन का सबसे सरल और तेज़ तरीका है, विशेष रूप से ASP.NET Core MVC और Blazor में।
मुख्य विशेषताएँ:
\n- \n
[Required]— मानnullया खाली नहीं हो सकता। \n [StringLength(max)]— स्ट्रिंग की लंबाई की सीमा। \n [Range(min, max)]— संख्यात्मक सीमाओं की जाँच। \n [RegularExpression(pattern)]— रेगुलर एक्सप्रेशन द्वारा जाँच। \n [EmailAddress]— ईमेल सत्यापन। \n [Compare("OtherProperty")]— दो गुणों की तुलना (जैसे, पासवर्ड और पुष्टिकरण)। \n
विशेषताओं के साथ मॉडल का उदाहरण:
\npublic class UserRegistrationDto\n{\n [Required(ErrorMessage = "नाम अनिवार्य है")]\n [StringLength(50, MinimumLength = 2, ErrorMessage = "नाम में 2 से 50 वर्ण होने चाहिए")]\n public string FirstName { get; set; }\n\n [Required(ErrorMessage = "ईमेल अनिवार्य है")]\n [EmailAddress(ErrorMessage = "अमान्य ईमेल प्रारूप")]\n public string Email { get; set; }\n\n [Required]\n [Range(18, 120, ErrorMessage = "आयु 18 से 120 के बीच होनी चाहिए")]\n public int Age { get; set; }\n\n [Required]\n [DataType(DataType.Password)]\n public string Password { get; set; }\n\n [Compare("Password", ErrorMessage = "पासवर्ड मेल नहीं खाते")]\n public string ConfirmPassword { get; set; }\n}\n\nमॉडल की मैन्युअल जाँच:
\npublic static bool ValidateUser(UserRegistrationDto user, out List<ValidationResult> errors)\n{\n var context = new ValidationContext(user);\n errors = new List<ValidationResult>();\n return Validator.TryValidateObject(user, context, errors, validateAllProperties: true);\n}\n\n// उपयोग:\nvar user = new UserRegistrationDto { FirstName = "A", Email = "invalid", Age = 15 };\nif (!ValidateUser(user, out var errors))\n{\n foreach (var error in errors)\n Console.WriteLine(error.ErrorMessage);\n}\n\n2. FluentValidation — उन्नत सत्यापन
\nFluentValidation लाइब्रेरी (NuGet: FluentValidation.AspNetCore) फ्लुएंट इंटरफ़ेस के माध्यम से सत्यापन नियमों का वर्णन करने का अधिक लचीला और पठनीय तरीका प्रदान करती है। यह जटिल परिदृश्यों के लिए आदर्श है: सशर्त सत्यापन, कस्टम संदेश, नियम श्रृंखलाएँ और DI कंटेनरों के साथ एकीकरण।
NuGet के माध्यम से स्थापना:
\ndotnet add package FluentValidation.AspNetCore\n\nसत्यापनकर्ता का उदाहरण:
\nusing FluentValidation;\n\npublic class UserValidator : AbstractValidator<UserRegistrationDto>\n{\n public UserValidator()\n {\n RuleFor(u => u.FirstName)\n .NotEmpty().WithMessage("नाम खाली नहीं हो सकता")\n .Length(2, 50).WithMessage("नाम में 2 से 50 वर्ण होने चाहिए");\n\n RuleFor(u => u.Email)\n .NotEmpty().WithMessage("ईमेल अनिवार्य है")\n .EmailAddress().WithMessage("अमान्य ईमेल प्रारूप");\n\n RuleFor(u => u.Age)\n .InclusiveBetween(18, 120).WithMessage("आयु 18 से 120 के बीच होनी चाहिए");