Area در MVC چیست و چگونه کار می کند؟

شنبه 4 مهر 1394

در این مقاله قصد داریم توضیحی در مورد Area ها در MVC ارائه دهیم. مایکروسافت Area ها را از ASP.NET MVC 2.0 در برنامه های کاربردی MVC گنجانده است . Area ها روشی برای تقسیم یا جداسازی ماژول های برنامه های بزرگ هستند.

Area در MVC چیست و چگونه کار می کند؟

همانطور که ذکر شد Area روشی برای تقسیم و جداسازی ماژول های بزرگ در برنامه می باشد. هنگامی که یک Area به پروژه اضافه می کنید، مسیری برای Area در فایل AreaRegistration ایجاد میشود. این مسیر درخواست ها را براساس URL به Area می فرستد. ;()AreaRegistration.RegisterAllAreas
   

مزایای استفاده از Area در MVC

Area(1 ها اجازه می دهند که Model ها، view ها و controller ها در بخش های عملیاتی مجزا در برنامه  سازماندهی شوند. مثل بخش administration، حسابداری، پشتیبانی از مشتری و غیره...

2)به آسانی می تواند با سایر Area های ایجاد شده توسط دیگران ادغام شود.

3) اجرای unit test را آسان می سازد.

چگونه Areaها را در ASP.Net MVC 5 بسازیم؟

ما در پروژه خود یک  controller پیش فرض با نام Home داریم که در آن اکشنی به نام Index به همراه View مربوط به خود وجود دارد. Solution  برنامه مورد نظر را در زیر مشاهده کنید.

 

حالا ما نیاز داریم که از Area در این برنامه استفاده کنیم، بنابراین روند انجام کار را در زیر مشاهده کنید.

بر روی نام پروژه کلیک راست کرده و سپس Add و بعد آن Area را انتخاب کنید.

 

 

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

ابتدا Area برای قسمت آقایان ایجاد می کنیم:

 

این مراحل یک پوشه با نامی که برای Area در نظر گرفتیم به برنامه اضافه می کند. که شامل تمام پوشه های Model ، View و Controller می باشد.

 

حالا یک Controller در Area قسمت آقایان اضافه کنید:

 

نامی برای Controller بنویسید:

در این Controller اکشنی با نام Index وجود دارد:

 

namespace MVC5WithArea.Areas.Mens.Controllers
{
    public class HomeController : Controller
    {
        // GET: Mens/Home
        public ActionResult Index()
        {
            return View();
        }
    }
}

یک View به این اکشن اضافه کنید:

در نهایت همه چیز با View و Controller ها را در solution داریم و خروجی به صورت شکل زیر می باشد:

 

حال تمام مراحل گفته شده را برای ماژولی که مربوط به خانم ها می شود به طور مشابه انجام دهید:

 

پس از اضافه کردن همه چیز مشابه آنچه که برای آقایان انجام شد، solution را مشاهده کنید:

حالا اگر برنامه را اجرا کنید، مسیر پیش فرضی که در RouteConfig.cs مشخص شده اجرا می شود که به صورت/Home/Index می باشد بنابراین یک exception برمی گرداند:

Exception تولید شده را مشاهده کنید که نشان می دهد ما چندین کنترلر Home در پروژه داریم پس برای حذف  Exception از صفت های namespace در RouteConfig.cs استفاده می کنیم تا  Exception حدف شود:

حالا فایل پیش فرض RouteConfig.cs را باز کنید تا namespace ها را برای مسیر پیش فرض تنظیم کنید:

 

کد زیر را به RouteConfig.cs اضافه کنید:

                                                                                                                                                namespaces: new string[] {"MVC5WithArea.Controllers"}

به صورت زیر:

 

 

حالا مجددا برنامه را اجرا کنید. در حال حاضر این برنامه قابل اجرا می باشد و می تواند کنترلر Home را با استفاده از namespaces پیدا کند.

حالا اگر بخواهید مسیر درخواست خود را از کنترلر پیش فرض به کنترلر Area تغییر دهید باید یک action link اضافه کنید:

اما قبل از action link می توانید فقط در همان دامنه و یا Area مشابه درخواست ارسال کنید اما اگر بخواهید درخواستی به Area دیگر بفرستید باید از Action Link extension method استفاده کنید، مانند زیر:

@Html.ActionLink("Go To Mens Home", "Index", "Home",new {area="Mens" },null)

فقط یک Action link برای Area های مختلف اضافه کنید، یکی برای قسمت خانم ها و یکی برای قسمت آقایان.

حالا برنامه را اجرا کنید و بر روی هر لینک کلیک کنید تا به action مورد نظر تغییر مسیر دهد.

 

این یک روش برای تغییر مسیر از یک Area به Area دیگر است:

اگر بخواهیم آرگومان Area پیش فرض را در URL تنظیم کنیم باید از مجموعه DataToken برای اضافه کردن یک کلید به Area در RouteConfig.cs استفاده کنیم.

 

حالا برنامه را دوباره اجرا کنید و تغییرات را مشاهده کنید:

 

 

                                                                           

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

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

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

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

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