در ASP.NET بصورت پیش فرض یک سری از Data Annotation ها وجود دارند که کافیه اونا رو روی پراپرتی که قصد اعمال اون محدودیت رو دارین بزارین برای نمونه اجبار کاربر به وارد کردن یک مقدار داخل یک فیلد یا پراپرتی [Required] و نمونه های پیش فرض دیگر...
اگر به جزئیات تمامی این Data Annotation ها دقت کنید از کلاسی به نام ValidationAttribute مشتق شده اند
حال فرض کنید میخواهید یک سری Validation اعمال کنید که داخل ASP.NET وجود ندارند، برای دستیابی به این امکان کافیه یه کلاسی داشته باشین که از ValidationAttribute ارث بری کرده باشد ، بزارید با یک مثال ادامه دهیم: میخواهیم از ورود یک سری کاراکتر توسط کاربر هنگام وارد کردن نام کاربری جلوگیری کنیم ، پس یک مدل به نام Student میسازیم که شامل پراپرتی های زیر میباشد:
سپس کلاسی ساخته و آنرا از ValidationAttribute مشتق میکنیم و متد IsValid را بازنویسی میکنیم،با توجه به داده های ورودی کاربر که بصورت رشته میباشد در سازنده کلاس مقدار این رشته را میگیریم تا عملیات جستجو داخل آنرا به منظور یافتن کارکترهای غیرمجاز انجام دهیم و در صورت وجود هر کارکتر مقدار بازگشتی متد بصورت زیر میباشد :
return new ValidationResult(errorMessage);
و در صورتی که کاربر از کارکترهای مجاز استفاده کرده باشد خروجی متد بصورت زیر میباشد:
return ValidationResult.Success;
در آخر پراپرتی که قصد اعمال این Custom Validation را داریم مشخص میکنیم:
[ExcludeChar("@#$%&*",ErrorMessage ="نمیتوانید از کارکترهای @#$%&* استفاده کنید")]
public string UserName { get; set; }
در کل به کمک استفاده از این امکان میتوان در سمت سرور محدودیتهای مختلفی بسته به سناریوی موجود روی مدلهای خود اعمال نمائید.