در این جلسه از آموزش ASP.NET Core به معرفی خصوصیت Range خواهیم پرداخت و همچنین نحوه سفارشیسازی Attribute و سفارشیسازی Validation را ارائه خواهیم داد. در ادامه مبحث جلسه 38 در مورد اعتبارسنجی فرمها، به معرفی یک خصوصیت دیگر به نام Range خواهیم پرداخت. همچنین روش سفارشیسازی خصوصیتهای (Attribute) مختلف را ارائه خواهیم نمود و در ادامه نحوه ایجاد یک خصوصیت اعتبارسنجی (Validation Attribute) جدید را نیز بررسی میکنیم.
خصوصیت Range
خصوصیت Range جهت تعریف محدوده مجاز برای فیلدهای مختلف با انواع داده مورد کاربرد قرار میگیرد. این خصوصیت و یا همان Attribute نیز در فضای نام System.ComponentModel.DataAnnotations قرار دارد و برای استفاده از آن، میبایست این فضای نام به Model و یا ViewModel مربوطه اضافه گردد. این Attribute دارای Overloaded ورژنهای مختلف میباشد که بر اساس نیاز میتوان از انها استفاده نمود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
public class CreateCostViewModel { [Range(0.0,100000.0)] public decimal Amount { get; set; } [Range(typeof(DateTime),"01/01/1996","01/01/2050")] public DateTime Date { get; set; } public string Comment { get; set; } public string Category { get; set; } public List<SelectListItem> Categories { get; set; } public List<string> SelectedCategories { get; set; } public int PaymentMethod { set; get; } public List<PaymentMethod> PaymentMethods { get; set; } public bool MakeFormClear { get; set; } } |
همانگونه که در قطعه کد فوق مشاهده مینمایید، خصوصیت Range بروی فیلدهای Amount و Date اعمال گردیده است.
سفارشیسازی Attribute در ASP.NET Core
جهت سفارشیسازی Attribute میبایست یک کلاس درون پروژه خود ایجاد نمایید که ارثبری آن از خصوصیت مورد نظر ما باشد. به عنوان مثال در صورت نیاز به سفارشیسازی StringLength Attribute، کلاس ما باید از این Attribute ارثبری نماید. این کلاس میتواند در قسمتهای مختلف پروژه ایجاد گردد، ولی جهت حفظ ساختار پروژه بهتر است آنرا در پوشه خاصی ایجاد نماییم. همچنین برای استفاده از کلاس والد باید فضای نام آن به کلاس مربوطه اضافه گردد (System.ComponentModel.DataAnnotations).
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System.ComponentModel.DataAnnotations; namespace DailyCostWebApplication.CustomHtmlHelpers { public class AllowedCharcterLength : StringLengthAttribute { } } |
سپس با توجه به نیاز پروژه، متد Base را فراخوانی نموده و تغییرات دلخواه را اعمال مینماییم.
1 2 3 4 5 6 7 8 9 10 |
public class AllowedCharcterLength : StringLengthAttribute { public AllowedCharcterLength() : base(10) { } } |
ما در این مثال یک Attribute به نام AllowedCharacterLength ایجاد نمودیم که از خصوصیت StringLengthAttribute ارثبری مینماید. این خصوصیت نیازی به پارامتر ورودی ندارد و در صورت اعمال بروی فیلدهای رشتهایی، حداکثر تعداد کاراکتر آنرا برابر 10 قرار میدهد. همچنین دیگر پارامترهای مربوط به StringLengthAttribute و ValidationAttribute به عنوان والد این خصوصیت مانند ErrorMessage در دسترس میباشند.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System.ComponentModel.DataAnnotations; namespace DailyCostWebApplication.CustomHtmlHelpers { public class AllowedCharcterLength : StringLengthAttribute { public AllowedCharcterLength() : base(10) { } } } |
سفارشیسازی Validation در ASP.NET Core
علاوه بر امکان سفارشیسازی Attribute ما امکان ایجاد یک Validation سفارشی را نیز داریم. برای این منظور مانند مثال قبل نیاز به ایجاد یک کلاس داریم. این کلاس باید از ValdationAttribute ارثبری نماید و به این منظور نیاز به اضافه نمودن فضای نام مربوطه نیز داریم (System.ComponentModel.DataAnnotations).
1 2 3 4 5 6 7 8 9 10 11 12 13 |
using System; using System.ComponentModel.DataAnnotations; namespace DailyCostWebApplication.CustomHtmlHelpers { public class AllowedCharacterRange : ValidationAttribute { } } |
سپس با استفاده از متد IsValid شرایط مورد نظر اعتبارسنجی را بررسی نموده و نتیجه را به صورت Boolean باز خواهیم گرداند.
1 2 3 4 5 6 7 8 9 10 11 12 |
public class AllowedCharacterRange : ValidationAttribute { public override bool IsValid(object value) { string str = Convert.ToString(value); return str.Length >= 5 && str.Length <= 10; } } |
در مثال فوق، در صورت استفاده خصوصیت AllowedCharacterRange برای فیلدهای رشته ایی، شرط اعتبارسنجی ورود رشته بین 5 تا 10 کاراکتر خواهد بود.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
using System; using System.ComponentModel.DataAnnotations; namespace DailyCostWebApplication.CustomHtmlHelpers { public class AllowedCharacterRange : ValidationAttribute { public override bool IsValid(object value) { string str = Convert.ToString(value); return str.Length >= 5 && str.Length <= 10; } } } |
در صورت نیاز به جزئیات بیشتر، میتوانید ویدئو آموزشی این جلسه را تماشا نمایید. همچنین برای آگاهی از جلسات بعدی این دوره آموزشی، ما را در اینستاگرام، تلگرام، یوتیوب و آپارات دنبال کنید. همچنین لیست کامل جلسات در این قسمت در دسترس شما میباشد.
دانلود اسلایدهای آموزشی این جلسه از اینجا