نحوه استفاده از Data Annotation در MVC

این مقاله، Data Annotation را توضیح می دهد که یک کتابخانه در NET Framwork. است که در اعتبارسنجی بسیار مفید است.

نحوه استفاده از Data Annotation  در MVC

با استفاده از Data Annotation برنامه نویس، نیازی ندارد که منطقی برای اعتبارسنجی بسازد. زیرا که اعتبارسنجی می تواند با تعریف صفات Data Annotation که قوانین Data Annotation را الزام می کنند، انجام شود.

فضای نام (namespace)

فضای نام System.ComponentModel.DataAnnotations، کلاس های attribute جهت اعتبارسنجی را فراهم می کند.

کلاس های attribute

بیش از 30 کلاس attribute در فضای نام System.ComponentModel.DataAnnotations وجود دارد. در این مقاله، چند کلاس رایج و پرکاربرد را بحث خواهیم کرد:

- RequiredAttribute

- Range Attribute

- EmailAddressAttribute

- MinLengthAttribute

- MaxLengthAttribute

Required Attribute:

اعتبارسنجی فیلد مورد نیاز را برای فیلد داده ای مشخص شده، اجبار می کند.

مثال:

[Required(ErrorMessage = "Please enter Name)]
 public string Name{ get; set; }  

property (ویژگی) Error Message برای set/get پیغام خطا استفاده می شود.

Range Attribute:

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

مثال:

[Range(1.00, 100.00,ErrorMessage="Please enter a Amount between 1.00 and 100.00" )]  
public decimal? Amount { get; set; }  

Regular Expression Attribute:

Regular expression ها می توانند به فیلد داده ها اضافه شوند، regular expression های اضافه شده برای اعتبارسنجی اعمال می شوند. 

چند snippet پرکاربرد برای اعتبارسنجی:

[RegularExpression(@"^[0-9]{8,11}$", ErrorMessage = "error Message ")] 

برای چک کردن فیلد مربوطه استفاده می شود که، فقط عدد باشد و حداقل 8 رقم و حداکثر 11 رقم داشته باشد.

[RegularExpression(@"[0-9]{0,}\.[0-9]{2}", ErrorMessage = "error Message")] 

برای چک کردن فیلد به کار می رود که تنها اعدادی با دو رقم اعشار داشته باشند.

[RegularExpression(@"^(?!00000)[0-9]{5,5}$", ErrorMessage = "error Message")]

برای اعتبارسنجی کدپستی استفاده می شود. کدپستی باید 5 رقم باشد و 00000 هم نباشد.

[RegularExpression(@"^(\d{4})$", ErrorMessage = "error Message")]  

این فیلد باید عدد 4 رقمی باشد. این کار برای جلوگیری از وارد کردن کاراکترها و تنها به کاربردن اعداد است. 

[RegularExpression(@"^(\d{5,9})$", ErrorMessage = "error Message")]  

این فیلد باید شامل یک عدد با حداقل 5 رقم و حداکثر 9 رقم باشد.

Regex برای اعتبارسنجی ایمیل:

    @"^(([^<>()[\]\\.,;:\s@""]+(\.[^<>()[\]\\.,;:\s@""]+)*)|("".+""))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$"  
@"^(?!0+$)[0-9]{5,5}$"  

زمانی که از اعتبارسنجی کدپستی استفاده می کنیم، همچنین عدد نباید با 0 شروع شود.

MinLengthAttribute:

حداقل سایز داده را چک می کند، به عنوان مثال برای رشته و آرایه. بنابراین، برای انواع int کار نخواهد کرد.

MaxLengthAttribute:

حداکثر سایز داده را چک می کند، به عنوان مثال برای رشته و آرایه. بنابراین، برای انواع int کار نخواهد کرد.

فعال سازی اعتبارسنجی Unobtrusive سمت کاربر توسط Data Annotation:

زمانی که ما تغییرات زیر را در فایل Config اعمال می کنیم، اعتبارسنجی سمت کاربر براساس قوانین Data Annotation تعریف شده در مدل، انجام خواهد شد.

<add key="ClientValidationEnabled" value="true" />   
lt;add key="UnobtrusiveJavaScriptEnabled" value="true" />  

اسکریپت های زیر، باید به view page اضافه شود تا اعتبارسنجی Unobtrusive سمت کاربر توسط Data Annotation فعال شود.

<script src="~/Scripts/jquery-2.1.1.js"></script>  
<script src="~/Scripts/jquery.validate.min.js"></script>  
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script