بررسی پیاده سازی اعتبارسنجی Validation در ASP.NET MVC

بررسی پیاده سازی اعتبارسنجی Validation در ASP.NET MVC

در این پست از وبسایت پرووید در رابطه با بررسی پیاده سازی اعتبارسنجی Validation در ASP.NET MVC صحبت خواهیم کرد. معماری MVC از معمول ترین و پرکاربردترین معماری های ساخت وب اپلیکیشن ها می باشد.

در این بخش از سری آموزش جامع و رایگان ASP.NET MVC از وب سایت پرووید در رابطه با پیاده سازی مکانیزم اعتبار سنجی داده ها و یا همان Data Validation صحبت خواهیم کرد. اگر این آموزش و قسمتهای قبل آن را دنبال کرده باشید میدانید که تا به اینجای کار ما برای ویرایش کردن یک Student اقدام به ایجاد کردن یک View کرده ایم که نام آن را نیز Edit گذاشته ایم حال در این قسمت می خواهیم در این View اقدام به پیاده سازی مکانیزم Data Validation کنیم تا زمانی که کاربر داده هایی را برای فیلد های مختلف یک Student وارد می کند و اقدام به کلیک کردن بر روی دکمۀ Save می نماید Data Validation انجام شده و در صورت نیاز پیامهایی در رابطه با اعتبار سنجی داده ها به کاربر نشان داده شود. تصویر زیر گویای این موضوع می باشد.

validation - بررسی پیاده سازی اعتبارسنجی Validation در ASP.NET MVC

بررسی Data Annotation ها

در فریم ورک ASP.NET MVC با استفاده از Attribute هایی که به آنها DataAnnotation می گوئیم می توانیم به راحتی Validation را پیاده سازی کنیم. توصیه می کنیم که از بسته ی آموزش ویدئویی Attribute ها در سی شارپ برای اطلاعات بیشتر در این رابطه استفاده کنید. در واقع Data Annotation ها بصورت Built-in در فریم ورک .NET پیاده سازی شده اند و در بر دارنده ی قوانین اعتبار سنجی و یا Validation Rule هایی می باشند. از Data Annotation ها می توانیم بر روی Property های یک Model Class در فریم ورک  ASP.NET MVC استفاده کنیم تا پس از آن بصورت خودکار Validation Rule ها و یا همان قوانین اعتبار سنجی بر روی آن Property ها اعمال شود و در صورت نیاز پیامهای اعتبار سنجی و یا اصطلاحاً Validation Message هایی در View نشان داده شود.

شاید بدانید که Data Annotation ها در System.ComponentModel.DataAnnotations قرار دارند. جدولی که در قسمت زیر می بینید لیستی از Data Annotation ها را به شما نشان می دهد.

validation attributes - بررسی پیاده سازی اعتبارسنجی Validation در ASP.NET MVC

در ادامه اقدام به پیاده سازی Validation با استفاده از Data Annotation ها در Edit به عنوان یک View خواهیم کرد.

قدم اول اضافه کردن Data Annotation ها به Property های مختلف کلاس Student می باشد. ما در این قسمت قصد داریم که Property های StudentName و Age را اعتبار سنجی کنیم و در صورت تهی بودن مقدار آنها یک پیغام اعتبار سنجی و یا Validation Message به کاربر نشان بدهیم.

علاوه بر این موضوع مقدار وارد شده برای Age باید بین عدد پنج و پنجاه باشد. کدی که در قسمت زیر مشاهده می کنید نحوۀ اضافه کردن Data Annotation ها به Property های StudentName و Age را نشان می دهد.

public class Student
{
    public int StudentId { get; set; }
     
    [Required]
    public string StudentName { get; set; }
       
    [Range(5,50)]
    public int Age { get; set; }
}

بسته ی آموزش ویدئویی ASP.NET MVC و Entity Framework در قالب پروژه

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی ASP.NET MVC و Entity Framework در قالب پروژه دیدن کنید.

در کد بالا مشاهده می کنید که Required به عنوان اولین Data Annotation بر روی پروپرتی StudentName اضافه شده است. کلمه ی Required در زبان انگلیسی به معنی الزامی می باشد. تا به اینجای کار فریم ورک ASP.NET MVC درک خواهد کرد که برای پروپرتی Student Name حتماً باید مقداری وجود داشته باشد و اگر کاربر بدون وارد کردن مقداری برای این Property اقدام به ذخیره کردن یک Student کند، Validation Message پیش فرض مربوط به این Data Annotation در View نمایش داده می شود.

به همین ترتیب از Range بعنوان یک Data Annotation دیگر برای Age استفاده کرده ایم و مقادیر حداقلی و حداکثری را برای آن در نظر گرفته ایم. این موضوع باعث می شود که اگر کاربر یک مقدار کمتر از پنج و یا بیشتر از پنجاه را وارد کند و سپس اقدام به ذخیره کردن Student نماید با خطا روبرو شود. علاوه بر این موضوع اگر هیچ مقداری نیز برای Age وارد نشود، پیغام خطا نشان داده خواهد شد.

در قسمت بعد باید دو Action Method برای انجام عملیات Get و Post را ایجاد کنیم. به این منظور وارد StudentController بشوید و Action Method های Get و Post را پیاده سازی کنید. این موضوع در کد زیر نشان داده شده است.

using MVC_BasicTutorials.Models;

namespace MVC_BasicTutorials.Controllers
{
    public class StudentController : Controller
    {
        public ActionResult Edit(int id)
        {
            var std = studentList.Where(s => s.StudentId == StudentId)
                                 .FirstOrDefault();

            return View(std);
        }

        

        [HttpPost]
        public ActionResult Edit(Student std)
        {
            if (ModelState.IsValid) { 
            
                //write code to update student 
            
                return RedirectToAction("Index");
            }
            
            return View(std);
        }
    }
}

همانطور که در کد بالا مشاهده می کنید در Action Method ی که انجام عملیات Post را به عهده دارد در ابتدا چک می کنیم که ModelState معتبر و Valid باشد. اگر ModelState معتبر باشد سپس اقدام به بروز رسانی Student در دیتابیس می کنیم در غیر اینصورت همان View یکسان یعنی Edit را یکبار دیگر به کاربر نشان می دهیم تا اطلاعات مربوط به Student که غیر معتبر می باشند را تغییر دهد و دوباره اقدام به بروز رسانی کند. نکته ی مهم اینکه ModelState.IsValid مشخص کننده ی این است که آیا مقادیر وارد شده برای Property های یک Student از نقطه نظر Data Annotation های اضافه شده در قسمت قبلی معتبر می باشند یا نه.

در قسمت بعد باید یک View برای انجام عملیات Edit را برای دانش آموز ایجاد کنیم. برای ایجاد کردن یک View بمنظور Edit کردن اطلاعات دانش آموز در Action Method ی که در قسمت قبل ایجاد کردیم راست کلیک کرده و سپس گزینۀ Add View را انتخاب می کنیم. این موضوع باعث می شود که پنجرۀ زیر نشان داده شود.

addview - بررسی پیاده سازی اعتبارسنجی Validation در ASP.NET MVC

در پنجرۀ بالا نام View مورد نظر را بصورت پیش فرض Edit در نظر بگیرید. علاوه بر این گزینه ی Template را نیز بر روی مقدار Edit تنظیم کنید و نهایتاً گزینۀ Model Class را بر روی مقدار Student تنظیم کنید. این موضوع در تصویر زیر نیز نشان داده شده است.

addview 2 - بررسی پیاده سازی اعتبارسنجی Validation در ASP.NET MVC

پس از آن بر روی دکمه ی Add کلیک کنید تا View مورد نظر در فولدر View/Student ساخته شود. فایل Edit.cshtml و کد موجود در آن را در قسمت زیر می توانید مشاهده کنید.

@model MVC_BasicTutorials.Models.Student

@{
    ViewBag.Title = "Edit";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Edit</h2>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    
    <div class="form-horizontal">
        <h4>Student</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        @Html.HiddenFor(model => model.StudentId)

        <div class="form-group">
            @Html.LabelFor(model => model.StudentName, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.StudentName, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.StudentName, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Age, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Age, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Age, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Save" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

همانطور که در کد بالا مشاهده می کنید. به ازای تمامی فیلدهای موجود در کلاس Student از متد ValidationMessageFor استفاده شده است. علاوه بر این متد ValidationSummary در بالای این فایل قرار گرفته است. متد ValidationMessageFor مسئولیت نشان دادن Error Message های مربوط به هرکدام از فیلدها را به عهده دارد و متد VlidationSummary یک لیست از تمامی Error Message ها را در کنار هم نشان می دهد. حال اگر برنامه را اجرا کنید و به صفحه ی مربوط به ویرایش کردن اطلاعات یک دانش آموزش بروید و بدون وارد کردن مقداری برای Property های Name و Age اقدام به Save کردن اطلاعات کنید با تصویر زیر روبرو خواهید شد.

validation editview - بررسی پیاده سازی اعتبارسنجی Validation در ASP.NET MVC

بنابراین ما می توانیم در یک برنامۀ ASP.NET MVC با اعمال کردن DataAnnotatin ها بر روی Property های مختلف یک Model Class و سپس استفاده کردن از متدهای ValidationMessage() و ValidationMessageFor() اقدام به انجام عملیات Validation کنید.

امیدواریم که این آموزش از وبسایت پرووید نیز مورد توجه تمامی دوستان عزیز قرار گرفته باشد. از شما دعوت می‌کنیم که از دیگر آموزش های ما در رابطه با فریم ورک MVC استفاده کنید. لیست کامل این آموزش ها را می توانید در پست مربوط به آموزش کامل توسعه وب اپلیکیشن با ASP.NET MVC مشاهده کنید.

مرتضی گیتی
بدون نظر

ارسال نظر

نظر
نام
ایمیل
وب سایت