قراردادها در MVC

در این مقاله اهمیت قراردادهای رایج در MVC را شرح خواهیم داد.

قراردادها در MVC

Controllers

چندین قرارداد وجود دارد که هر نرم افزار mvc باید از آن پیروی کند. برای مثال هر controller که توسط کاربر تعریف می شود باید لغت Controller، را به عنوان پسوند با نام Controller داشته باشد. به عبارت دیگر BusinessController یا HomeController و همه ی Controller هایی که توسط کاربر تعریف می شوند، باید به طور مستقیم یا غیر مستقیم رابط IController را پیاده سازی کنند. اما هر زمان که یک فایل controller جدید اضافه می کنیم، خواهیم دید که همه ی کنترلرها از کلاس Controller ارث بری می کنند.

بنابراین، چرا خطای کامپایلر دریافت نمی کنیم؟

چرا که کلاس اولیه (Base) این کنترلرها که کنترلر تعریف شده توسط ما، از آن ارث بری می کند، اینترفیس IController را پیاده سازی می کند.

Views

حال، به قراردادهایی که باید برای view رعایت کنیم می پردازیم.

هر view که ما ایجاد می کنیم باید در محلی قرار بگیرد که mvc بتواند آن را پیدا کند . در ادامه یک مثال ساده را بررسی می کنیم.

 در این پروژه یک controller با نام HomeController و متد Indexای با کد زیر داریم.

اگر با ViewBag و ViewData آشنایی زیادی ندارید، توصیه می کنیم که ViewBag و ViewData در MVC را مطالعه کنید.

 

برای انتقال داده ها ازcontroller به یک view ، از شی داینامیک  mvc استفاده می کنیم. با استفاده از ViewBag داده ها را به view ارسال می کنیم. قبل از ارسال داده ها به view، باید یک view اضافه کنیم روی متد Index راست کلیک می کنیم و گزینه Add view را انتخاب می کنیم و نام آن را Index قرار می دهیم.

در Solution Explorer فولدر Views را باز می کنیم ،فایل  Index.cshtml را که در فولدر دیگری ایجاد شده است راخواهیم دید.

در  Index.cshtml کد زیر را می نویسیم..

برنامه را اجرا می کنیم.

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

 

 

 اگر دایرکتوری Home را از Home به Contacts تغییر دهیم و یا Index.cshtml را به IndexOne.cshtm تغییر دهیم  چه اتفاقی خواهد افتاد؟

یک exception رخ خواهد داد:

به همین دلیل است که زمانی که با Controller و View کار می کنیم، قراردادها مهم هستند.

Models

با Models قوانین سخت گیرانه وجود ندارد و فولدر مدل اختیاری است و می تواند در یک پروژه جداگانه باشد.

به مثال زیر توجه کنید:

حال در این پروژه یک فولدر Models داریم.

در حال حاضر، از پروژه اصلی خود با این پوشه کاری انجام خواهیم .

اگر برنامه خود را اجرا کنیم، خطایی دریافت نمی کنیم.

حال به پروژه اصلی خود، پروژه دیگری در همان solution اضافه می کنیم.

روی solution راست کلیک می کنیم و گزینه add وسپس New project را انتخاب میکنیم.

بر روی پروژه راست کلیک می کنیم و یک class library به پروژه اضافه می کنیم و نام مناسبی برای آن انتخاب می کنیم.

 class library که ایجاد کردیم، مطابق شکل زیر خواهد بود.

نام class1.cs را به brands تغییر می دهیم و کد های زیر را داخل آن می نویسیم.

برنامه را Build می کنیم.

حال از این کتابخانه در پروژه خود استفاده می کنیم و برای استفاده از این کتابخانه نیاز داریم تا reference این class library را به پروژه خود اضافه کنیم.

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

 solution را گسترش می دهیم و  projects را انتخاب می کنیم و بعد روی ok کلیک می کنیم.

این class library اکنون Model برنامه MVC ما است و ما می توانیم همه ی business logic یا کد را به آن اضافه کنیم تا داده را از دیتابیس یا از هر منبع داده ای که وجود دارد بازیابی کنیم.