توسعه مدل در ASP.NET MVC

دوشنبه 17 خرداد 1395

برای درک بهتر مدل ها، باید درباره رویکرد Entity Framework Code First چیزهایی بدانیم. در این مقاله درباره مدل صحبت میکنیم و مدل خود را با روش Code First ایجاد میکنیم.

توسعه مدل در ASP.NET MVC

مدل در MVC چیست؟

MVC مخفف Model View Controller و مدل لایه دسترسی به داده ها در MVC است. اساسا، MVC یک الگوی طراحی (design pattern) است و به نوعی شبیه به لایه مبتنی بر معماری که متشکل از لایه های مختلف نرم افزار مانند لایه دسترسی به داده(data access layer)، لایه رابط کاربر(user interface layer)، لایه منطق کسب و کار(business logic layer) و ...، در MVC است، مدل ها برای دسترسی به داده ها بامنطق کسب و کار  نرم افزار همکاری میکنند.

افزودن مدل به برنامه

مدل اساسا جداول دیتابیس است مدل  به سادگی یک کلاس است. بله، مدل فقط یک کلاس می باشد. بنابراین، هنگامی که شما یک مدل در پوشه مدل  یک برنامه  MVC اضافه  میکنید، با اضافه کردن یک کلاس در آن پوشه بسادگی یک مدل به آن اضافه کرده اید. این کلاس اشیاء است که برای انتقال داده بین لایه های مختلف نرم افزار و پایگاه داده کار می کند.

افزودن ویژگی ها(Attribute) به یک مدل

هنگامی که شما در مورد اضافه کردن پروپرتی به یک مدل صحبت می کنید،  می توان فرض کرد که شما در حال راه اندازی پروپرتی یک جدول دیتابیس ،به خاطر اینکه در پایان مدل مثل کلاس / جدول رفتار کند، هستید.

افزودن ویژگی به Properties

اضافه کردن ویژگی به property های کلاس در مدل درست مثل راه اندازی پروپرتی ستون در جداول دیتابیس است. بنابراین هر زمان که شما شنیدیدکه کسی در مورد اضافه کردن ویژگی به خواص کلاس صحبت  میکند ، نگران نباشید، این کاری  ساده است.

در این  مثال ، ما  توسعه یک مدل در برنامه ASP.NET و تجزیه و تحلیل آن را انجام میدهیم.

مثال:

  با استفاده از مراحل زیر  مثالی ساده ایجاد میکنیم:

    
ایجاد   نرم افزار جدید ASP.NET MVC  (استفاده از built in Template )
    افزودن یک مدل برای نرم افزار  با نام Student
    
افزودن Attribute   ها به  مدل Student 
     افزودن یک کنترلر و ویو  با عملیات  CRUD  (استفاده از built in Template)
     تجزیه و تحلیل جدول ایجاد شده  در مدل " Student "
     تجزیه و تحلیل رابط کاربری ایجاد شده  در مدل " Student "

یک پروژه جدید در ویژوال استودیو ایجاد میکنیم.

Create a new project

 MVC  را به عنوان الگو انتخاب کرده و روی Ok کلیک کنید.

Select MVC as template

solution explorer را به منظور دیدن پروژه خود باز کنید، در آنجا سه پوشه   models،   controllers  و  views را خواهید دید.هم اکنون یک مدل به پروزه خود اضافه میکنیم،برای این منظور روی پوشه مدل راست کلیک کرده و یک کلاس جدید به شرح زیر به آن اضافه میکنیم.

Add new class

نام کلاس را Student می گذاریم و روی دکمه Add کلیک میکنیم.

Student class

پس از اضافه کردن  مدل Student ، کد زیر برای شما نمایش داده میشود.

Student

همانطور که میبینید با یک کلاس خالی به سادگی یک مدل ایجاد کردیم . درحال حاضر باید پروپرتی ها را به مدل اضافه کنیم.

پروپرتی های زیر را به کلاس Student اضافه میکنیم.

ID

Name

Email

Retype Email

CNIC

City

کلاس مدل خود را با این کد به روز رسانی کنید.

Class

چند پروپرتی به کلاس مدل ما اضافه شده است .  RetypeEmail  به روش حرفه ای نیست اما فقط از آن برای نگه داشتن چیزهای ساده استفاده می شود.

افزودن  Data Annotation Library برای مدل

برای کار با validation و یا attribute ها، فایل کلاس مدل باید شامل data annotations library  باشد.

برای انجام این کار به تصویر زیر نگاه کنید.

Namespace

برای اعتبار سنجی پروپرتی ها در مدل ،مانند ID ، که باید به صورت خودکار اضافه شود ، نام نباید خالی باشد،و ایمیل با عباراتی مشخص  برای اطمینان از درست بودن آن باید اعتبار سنجی شود.برای انجام تمام این کارها باید data annotation را به پروژه اضافه کنیم.

کلاس مدل خود را با کد زیر به روز رسانی کنید.

Properties

public class Student
    {
        
       
        [Key]
        public int SrNo { get; set; }

        [Display(Name = "نام دانشجو")]
        [Required(ErrorMessage = "نام را وارد کنید")]
        public string Name { get; set; }
       
        [Display(Name = "ایمیل")]
        [Required (ErrorMessage = "ایمیل را وارد کنید"), DataType(DataType.EmailAddress)]
       
        public string Email { get; set; }

        [Display(Name = "تکرار ایمیل")]
        [Required(ErrorMessage = "تکرار ایمیل را وارد کنید")]
        [Compare("Email")]
        public string RetypeEmail { get; set; }


        [Required(ErrorMessage = "CNIC را وارد کنید"), RegularExpression("^[0-9+]{5}-[0-9+]{7}-[0-9]{1}$", ErrorMessage = "CNIC اشتباه است")]
        public string CNIC { get; set; }

        [Required(ErrorMessage = "نام شهر را وارد کنید")]
    [StringLength(30,MinimumLength = 12)]
    [Display(Name = "شهر")]
    public string City { get; set; }

        [Display(Name = "سن")]
        [Required (ErrorMessage = "سن را وارد کنید")]
        [Range(18,35)]
    public int Age { get; set; }
    }

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

[Key]

Key  برای تعیین کلید اصلی در یک مدل مورد استفاده قرار میگیرد Entity framework  به طور پیش فرض Auto increments (افزایش خودکار)،  برای کلید اصلی  میباشد .

[Display(Name ="نام دانشجو")]

هنگامی پروپرتی، برای  نام اختصاص داده میشود ، scaffolding، ویژوال استودیو  یک ویو  برای  مدل  اضافه میکند  .بنابراین اگر شما می خواهید به صراحت نام را تغییر دهید، می توانید از ویژگی  [Display] استفاده کنید.

[Required(ErrorMessage ="لطفا نام  را وارد کنید")]

 وقتی “Required” را مینویسیم ، برخی از ویژگی ها  مانند پر کردن متن پروپرتی اجباری میشود و کاربر نمیتواند آن قسمت را خالی رها کند. همچنین با این ویژگی میتوانید ،پیغام خطایی برای آن مشخص کنید.

[Required,DataType(DataType.EmailAddress)]

برای اعتبار سنجی  نوع ورودی ها مانند ایمیل و... میتوانید از  [EmailAddress] استفاده کنید.شما میتوانید دو اعتبار را با جدا کردن به وسیله کاما اعمال کنید.

[Compare("Email")]

برای مقایسه دو ویژگی میتوانیم از [Compare(“property name to compare to”)] در مدل خود استفاده کنیم. در اینجا ما ایمیل را با تکرار ایمیل مقایسه میکنیم.

[Required,RegularExpression("^[0-9+]{5}-[0-9+]{7}-[0-9]{1}$",ErrorMessage ="Incorrect CNIC")]

هنگام مقایسه مقادیر ورودی با الگوهای سفارشی ،  از عبارات منظم (regular expression) استفاده میکنیم. برای مثال،اعتبار سنجی شماره ملی که باید با یک عبارت سفارشی به صورت منظم انجام شود .

[StringLength(30,MinimumLength =12)]

زمان کار با رشته ها ،  شما باید طول رشته در پروژه را مدیریت کنید.بنابراین میتوانید  حدود حداقل و حداکثر طول رشته را در داخل کلاس مدل با استفاده  data annotation  تنظیم کنید.

[Range(18,35)]

در حال  کار با اعداد صحیح شما می توانید محدوده حداکثر و حداقل را برای هر پروپرتی عدد صحیح  در مدل را تنظیم کنید.

اضافه کردن کنترلر و ویو ها در پروژه

در حال حاضر یک کنترلر و یک ویو برای student model بالا اضافه میکنیم.

solution explorer را باز کرده ،روی پوشه کنترلر راست کلیک کرده و ومانند شکل زیر مراحل را ادامه دهید.

Add controller

هنگامی که روی add a controller کلیک میکنید، پنجره دیگری نمایش داده میشود که نوع کنترل کننده ای که میخواهید به پروژه اضافه کنید ، قرار دارد.

MVC5

با کلیک برروی Add پنجره کوچک دیگری نمایان میشود که در آن اطلاعاتی درباره کنترلر مشخص میشود.به منظور انتخاب بهتر در زیر چند مورد را توضیح میدهیم

Model Class : کلاس مدل  خود را انتخاب میکنیم  (که در اینجا  Student  است)

Data Context Class : در اینجا  کلاس دیتابیس خود را انتخاب میکنیم.

Use Layout page : اگر شما  در پروژه خود از layout pages استفاده کرده باشید ،میتوانید از این قسمت آن را انتخاب کنید.

layout pages دقیقا مانند master page در وب فرم عمل میکند.

Controller Name : در اینجا نام کنترلر را مشخص میکنیم.

تمام گزینه های مناسب را انتخاب کنید و سپس روی Add کلیک کنید.

Select all the options

شما ممکن است با خطای زیر روبرو شوید. بدون نگرانی، قبل از اضافه کردن یک آیتم جدید پروژه را build کنید.

Error

دکمه های [[Ctrl + Shift + Bرا برای  build  کردن پروژه  فشار دهیدو دوباره کنترلر خود را بسازید.

هنگامی که ویژوال استودیو شروع به اضافه کردن کنترلر ها و ویو ها در پروژه  کرد، یک پنجره کوچک با نام " Scaffolding " نمایش داده خواهد شد.

Scaffolding process

Scaffolding

 Scaffolding  یک روند ایجاد کد فعال است . Scaffolding  کدی براساس  مدل خود ایجاد می کند.

Scaffolding  با cross ASP.NET بیلد میشود ، این به این معنی است که از وب فرم ها و web API ها پشتیبانی میکند.

هنگامی که Scaffolding  انجام شود، پروژه مثل تصویر زیر خواهد شد، شما متوجه خواهید شد که کنترلر ها و ویو ها  به پروژه اضافه شده اند

Scaffolding.

 در پوشه  student داخل ویو ، Create را انتخاب میکنیم. شما می توانید ببینید که ویژوال استودیو تمام کدها را  با توجه به مدل برای شما ایجاد کرده است. برای اجرای پروژه F5 را فشار دهید.

شما می توانید مسیریابی  برنامه های تحت وب از نوار آدرس مشاهده کنید. هنگامی که شما بر روی دکمه Create کلیک کنید ،میتوانید  اطلاعات یک دانشجوی  جدید  را اضافه کنید . بدون پر کردن هر رشته ورودی، شما پیغام خطا را خواهید دید.

آموزش asp.net mvc


فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید