اعتبارسنجی IOptions توسط کتابخانه MiniValidation
308, PermanentRedirect
https://andrewlock.net/validating-nested-dataannotation-options-recursively-with-minivalidation icon

In this post I described the problem that by default, DataAnnotation validation doesn't recursively inspect all properties in an object for DataAnnotation attributes. There are several solutions to this problem, but in this post I used the MiniValidation library from Damian Edwards. This simple library provides a convenience wrapper around DataAnnotation validation, as well as providing features like recursive validation. Finally I showed how you can replace the built-in DataAnnotation validation with a MiniValidation-based validator

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddOptions<MySettings>()
    .BindConfiguration("MySettings")
    .ValidateMiniValidation() // 👈 Replace with mini validation
    .ValidateOnStart();

var app = builder.Build();
OptionsValidationException: 
  DataAnnotation validation failed for 'MySettings' member: 'Nested.Value' with errors: 'The Value field is required.'.; 
  DataAnnotation validation failed for 'MySettings' member: 'Nested.Count' with errors: 'The field Count must be between 1 and 100.'.
Microsoft.Extensions.Options.OptionsFactory<TOptions>.Create(string name)
Microsoft.Extensions.Options.OptionsMonitor<TOptions>+<>c__DisplayClass10_0.<Get>b__0()


اعتبارسنجی IOptions  توسط کتابخانه MiniValidation
معرفی کتابخانه Atrob
200, OK
https://github.com/taqinasiri/Atrob icon
Atrob یک کتابخانه کوچک برای Asp است که تعدادی validation Attribute را در خود جای داده است. برخی از Attribute‌های این کتابخانه شامل اتریبیوت‌های file validation برای اعتبار سنجی فایل‌ها از نظر فرمت فایل، اجباری بودن آپلود، حجم فایل و... ، date time validation ها برای اعتبار سنجی محدوده تاریخ ورودی، collection validation‌ها برای اعتبار سنجی تعداد عناصر مجموعه‌ها و... میباشد. همچنین برای اکثر attribute‌ها اعتبار سنجی کلاینت با jquery وجود دارد. لیست کامل Attribute‌ها و شیوه استفاده را میتوانید داخل مخزن کد این کتابخانه مشاهده کنید.
معرفی کتابخانه Atrob
کتابخانه اعتبارسنجی FoolProof برای ASP.NET Core
200, OK
https://github.com/rpgkaiser/FoolProof.Core icon
کتابخانه  FoolProof.Core (مخزن آن) Attribute‌های زیادی برای بحث اعتبار سنجی دارد که همگی علاوه بر Server-side از Client-side Validation هم پشتیبانی میکنن. نسخه قدیمی آن (foolproof) برای ASP.NET MVC سابق است (قبلا مقاله آموزش آن در سایت ثبت شده)  ولی این نسخه از ASP.NET Core پیشتیبانی میکنه
لیست Attribute های پشتیبانی شده:
  • Is
  • EqualTo
  • NotEqualTo
  • GreaterThan
  • LessThan
  • GreaterThanOrEqualTo
  • LessThanOrEqualTo
  • Improved required validators:
  • RequiredIf
  • RequiredIfNot
  • RequiredIfTrue
  • RequiredIfFalse
  • RequiredIfEmpty
  • RequiredIfNotEmpty
  • RequiredIfRegExMatch
  • RequiredIfNotRegExMatch
  • In
  • NotIn  
کتابخانه اعتبارسنجی FoolProof برای ASP.NET Core
اعتبارسنجی فایل‌های تصویر قبل از آپلود با جاوااسکریپت
200, OK
https://rokaweb.ir/js-img-valid/ icon
فایل‌های تصویر که روی سایت آپلود می‌شوند، با مشکلات متعددی ممکن است روبرو شوند. آپلود فایل‌هایی با پسوند یا محتوای غیرمجاز، آپلود فایل‌هایی با حجم غیرمجاز و آپلود فایل‌هایی با ابعاد غیرمجاز از جمله مشکلاتی هستند که بسیاری مواقع در هنگام طراحی سایت و برنامه‌نویسی وب با آن روبرو هستیم.

اعتبارسنجی فایل‌های تصویر که کاربر به سایت ارسال می‌کند، لازم است تا در سمت سرور انجام شود. ولی برای افزایش کارایی و بهبود تجربه کاربری، می‌تواند بخشی از اعتبارسنجی را به صورت موازی در سمت مشتری یا فرانت‌اند نیز به انجام رسانید.
اعتبارسنجی فایل‌های تصویر قبل از آپلود با جاوااسکریپت
کتابخانه کار با شماره تلفن های بین المللی و بررسی اعتبار سنجی آنها
200, OK
https://github.com/twcclegg/libphonenumber-csharp icon

C# port of Google's common Java, C++, C# and Javascript library for parsing, formatting, storing and validating international phone numbers.

نصب از طریق Nuget :

Install-Package libphonenumber-csharp
کتابخانه کار با شماره تلفن های بین المللی و بررسی اعتبار سنجی آنها
اعتبارسنجی Domain Model‎
301, MovedPermanently
http://www.kamilgrzybek.com/design/domain-model-validation/ icon

BC scope validation implementation 

public interface ICustomerUniquenessChecker
{
    bool IsUnique(Customer customer);
}
public Customer(string email, string name, ICustomerUniquenessChecker customerUniquenessChecker)
{
    this.Email = email;
    this.Name = name;

    var isUnique = customerUniquenessChecker.IsUnique(this);
    if (!isUnique)
    {
        throw new BusinessRuleValidationException("Customer with this email already exists.");
    }

    this.AddDomainEvent(new CustomerRegisteredEvent(this));
}


اعتبارسنجی Domain Model‎