آموزش validation پیشرفته در asp.net core

آموزش validation پیشرفته در asp.net core

اعتبارسنجی – Validation فرآیند بررسی و تأیید صحت داده‌های ورودی به برنامه است. البته در Asp.Net Core، این فرآیند به شما کمک می‌کند تا اطمینان حاصل کنید که داده‌های ورودی کاربران با قواعد و محدودیت‌های تعریف شده سازگار است. در ASP.NET Core، اعتبارسنجی معمولاً به دو دسته تقسیم می‌شود:

  • اعتبارسنجی سمت سرور
  • اعتبارسنجی سمت کلاینت

اعتبارسنجی (Validation) در ASP.NET Core یک بخش حیاتی از توسعه‌ی برنامه‌های وب است که به شما امکان می‌دهد تا اطمینان حاصل کنید داده‌هایی که از کاربران دریافت می‌کنید، مطابق با انتظارات شما هستند. این فرایند از ایجاد خطاهای ناخواسته و نقض امنیتی جلوگیری می‌کند.

اعتبارسنجی سمت سرور

صحت سنجی در سمت Server در ASP.NET Core با استفاده از ویژگی‌های داده (Data Annotations) و یا پیاده‌سازی منطق اعتبارسنجی سفارشی انجام می‌شود.

اعتبارسنجی سمت کلاینت

اعتبارسنجی سمت Client به طور معمول با استفاده از JavaScript و کتابخانه‌هایی مانند jQuery Validation انجام می‌شود. ASP.NET Core به طور پیش‌فرض Validation سمت کلاینت را با استفاده از ویژگی‌های داده و کتابخانه‌های مربوطه پشتیبانی می‌کند.

اعتبارسنجی سمت کلاینت به طور خودکار: وقتی از ویژگی‌های داده استفاده می‌کنید و مدل‌های شما به درستی پیکربندی شده‌اند، ASP.NET Core به طور خودکار Validation سمت کلاینت را با استفاده از JavaScript و کتابخانه‌های jQuery Validation انجام می‌دهد.

اعتبارسنجی در هر دو سمت (سرور و کلاینت) ضروری است. اعتبارسنجی سمت Client می‌تواند تجربه کاربری را بهبود بخشد، اما برای امنیت و اعتبارسنجی نهایی باید اعتبارسنجی سمت Server همیشه انجام شود.

معرفی Data Annotations

با افزودن Data Annotations ها به مدل های خود می توانیم به راحتی اعتبار سنجی را به برنامه خود اضافه کنیم. همجنین Data Annotation ها در برخی از برنامه‌های NET مانند ASP.NET Core قابل استفاده است و به این برنامه‌ها اجازه می‌دهد تا از Data Annotation ها برای اعتبارسنجی استفاده کنند.

  • برای استفاده از Data Annotation ها ابتدا namespace های زیر را وارد کنید.
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

معرفی دیتا انوتیش – Display

با استفاده از این Data Annotation می‌توانیم نام پراپرتی موجود در مدل را برای نمایش در view مشخص کنیم.

[Display(Name = "نام")]

معرفی دیتا انوتیش – Required

این Data Annotation مشخص می کند که مقدار اجباری است و نمی توان از آن گذشت و حتما باید پر شود.

[Required(ErrorMessage="Please enter name")]

معرفی دیتا انوتیش – DataType

برای تعیین نوع داده مدل استفاده می شود. انواع مختلفی دارد که تعداد کمی از آنها را به عنوان نمونه قرار دادیم.

[DataType(DataType.Text)]
[DataType(DataType.EmailAddress)]
[DataType(DataType.Date)]
[DataType(DataType.CreditCard)]
[DataType(DataType.Html)]
[DataType(DataType.PhoneNumber)]

معرفی دیتا انوتیش – Range

با این Data Annotation میتوانیم محدوده ای را بین دو عدد تعیین کنیم.

[Range(100,500,ErrorMessage="Please enter correct value")]

معرفی دیتا انوتیش – StringLength

با این Data Annotation می توانیم حداکثر و حداقل طول پراپرتی را مشخص کنیم.

[StringLength(30, ErrorMessage = "Do not enter more than 30 characters")]
[StringLength(12,MinimumLength =3,ErrorMessage = "characters should not be less than 3 and more than 12")]

معرفی دیتا انوتیش – MaxLength

با این Data Annotation می توانیم حداکثر طول پراپرتی را مشخص کنیم. همچنین میتوان از متغییر های زیر در دیتا انوتیش خود استفاده کنیم.

  • نام پراپرتی = {۰}
  • حداکثر طول رشته = {۱}
  • حداقل طول رشته = {۲}
[MaxLength(100, ErrorMessage="{0} can have a max of {1} characters")]

معرفی دیتا انوتیش – DisplayFormat

این Data Annotation امکان ایجاد یک فرمت خاص مثلا برای تاریخ را برای ما فراهم میکند. همچنین قابلیت NullDisplayText دارد. که کاربرد آن Null بودن است.

//شنبه, ۲۶ فروردین ۱۴۰۲
[DisplayFormat(DataFormatString = "{0: dddd, dd MMMM yyyy}")]
//شنبه, ۲۶ فروردین ۱۴۰۲ ۲۲:۵۵:۲۲
[DisplayFormat(DataFormatString = "{0:dddd, dd MMMM yyyy HH:mm:ss}")]
//شنبه, ۲۶ فروردین ۱۴۰۲ ساعت ۲۲:۵۵:۲۲
[DisplayFormat(DataFormatString = "{0:dddd, dd MMMM yyyy ساعت HH:mm:ss}")]
//شنبه, ۲۶ فروردین ۱۴۰۲ ساعت ۲۲:۵۵
[DisplayFormat(DataFormatString = "{0:dddd, dd MMMM yyyy ساعت HH:mm}")]
//شنبه, ۲۶ فروردین ۱۴۰۲ ساعت ۲۲
[DisplayFormat(DataFormatString = "{0:dddd, dd MMMM yyyy ساعت HH}")]
//ساعت ۲۲ شنبه, ۲۶ فروردین ۱۴۰۲
[DisplayFormat(DataFormatString = "{0:ساعت HH dddd, dd MMMM yyyy}")]
//۲۶/۰۱/۱۴۰۲
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}")]
//۱۴۰۲/۰۲/۰۱
[DisplayFormat(DataFormatString = "{0:yyyy/MM/dd}")]
//NullDisplayText
[DisplayFormat(NullDisplayText = "-", DataFormatString = "{0:MM/dd/yyyy}")]

معرفی دیتا انوتیش – RegularExpression

توسط این Data Annotation میتوانیم یک قالب برای مواردی مثل ایمیل، شماره تلفن، تاریخ و … را تعریف کنیم.

[RegularExpression(@"^\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$", ErrorMessage = "Email is not valid.")]

 دیتا انوتیش های کاربردی

تلفن همراه

[Display(Name = "تلفن همراه")]
[RegularExpression("09(1[0-9]|3[1-9]|2[1-9])-?[0-9]{3}-?[0-9]{4}", ErrorMessage = "قالب {۰} اشتباه است")]

تلفن ثابت

[Display(Name = "تلفن ثابت")]
[RegularExpression("^0[0-9]{2,}[0-9]{7,}$", ErrorMessage = "قالب {۰} اشتباه است")]

ایمیل

[Display(Name = "ایمیل")]
[Required(ErrorMessage = "فیلد {۰} خالی است")]
[EmailAddress(ErrorMessage = "قالب {۰} اشتباه است")]

حداقل و حداکثر کاراکتر های رمز عبور

[Display(Name = "رمز عبور")]
[Required(ErrorMessage = "فیلد {۰} خالی است")]
[StringLength(12,MinimumLength =3,ErrorMessage ="تعداد کاراکتر ها نباید کمتر از ۳ و بیشتر از ۱۲ باشد")]
[DataType(DataType.Password)]

تبدیل TextBox به TextArea

[DataType (DataType.MultilineText)]

برسی تکرار رمز عبور

[Compare("Password",ErrorMessage ="تکرار رمز عبور صحیح نمیباشد.")]

اعتبار سنجی در سمت سرور

برای اعتبار سنجی در سمت سرور میتوانید از شرط زیر استفاده کنید.

if (ModelState.IsValid)
{
    //Validate success
}
else
{
    //Validate failed
}

ارسال پیام خطا از سمت سرور

بعضی مواقع نیاز است عملیات اعتبار سنجی در سمت سرور برسی شود. مثلا برسی اینکه که آیا کاربر قبلا با این ایمیل ثبت نام کرده یا خیر. در این مواقع اعتبار سنجی در سمت سرور انجام میشود. و درصورتی که نیاز بود پیام خطا به کاربر ارسال شود. میتوانید از دستور زیر برای این کار استفاده کنید.

ModelState.AddModelError("Email", "این ایمیل تکراری است");

غیر فعال کردن خطا قبل از کلیک بر روی دکمه

اگر شما فرمی را با اتربیوت های Data Annotations مورد اعتبار سنجی قرار دهید. زمانی که صفحه شما لود میشود. پیام های خطا و ارور ها نمایش داده میشود. برای اینکه جلوی این اتفاق را بگیرید. و زمانی پیام های خطا نمایش داده شود که روی دکمه کلیک میکنید. میتوانید از دستور زیر استفاده کنید.

ModelState.Clear();

سورس کد AdvancedValidation

شما می‌توانید سورس کد کامل AdvancedValidation را از طریق گیت مشاهده کنید و یا اگر گیت کار نمی‌کنید، به راحتی آن را به صورت فایل فشرده (ZIP) دانلود کنید. فایل‌های دانلودی شامل تمام بخش‌های پروژه است و می‌توانید آن را روی سیستم خود اجرا یا تغییر دهید.

سورس کد AdvancedValidation

مشاهده در آپارات یا یوتیوب

محتوای ویدیویی این صفحه در سایت قابل مشاهده است. اما اگر عادت دارید توی پلتفرم آپارات یا یوتیوب ویدیوها را مشاهده کنید، می‌توانید از دکمه‌های زیر استفاده کنید.

تماشای ویدیوی آموزش validation پیشرفته در asp.net core در آپارات و یوتیوب

اشتراک‌گذاری با یک کلیک

با یک کلیک، محتوای این صفحه را در شبکه‌های اجتماعی، ایمیل یا پیام‌رسان‌های مورد علاقه‌تان به‌سرعت به اشتراک بگذارید.

اشتراک‌گذاری صفحه آموزش validation پیشرفته در asp.net core در شبکه‌های اجتماعی

نظرات ارزشمند شما

نظرات شما برای ما ارزشمند است و آنها را میخوانیم و پاسخ میدهیم.

تصویر grn

تشکر خدا برکتتان بدهد.

تصویر محمدرضا احدیان

ممنون از شما دوست عزیز
سلامت باشید

تصویر حسین

سلام با تشکر از الطاف بی منت شما ، بنده بی صبرانه منتظر فصل هفتم هستم

تصویر محمدرضا احدیان

ممنون از شما دوست عزیز
سلامت باشید

فرم افزودن دیدگاه

با ارسال نظرات خود ما را در ایجاد محتوای بهتر کمک کنید.

با خدمات تهران آی تی آشنا شوید

تهران آی تی با افتخار خدمات زیر را ارائه می‌دهد.