کار با Area در MVC

از MVC 2 به بعد شرکت مایکروسافت ویژگی های جدیدی در برنامه های MVC به نام Area فراهم نموده است. در این مقاله این ویژگی را بررسی خواهیم کرد.

Areas راهی برای تقسیم و ایزوله کردن ماژول های یک برنامه MVC بزرگ به بخش های مختلف و از هم جدا می باشد مانند :

 

هنگامی که شما یک Area به پروژه اضافه می کنید، یک مسیر برای Area در فایل AreaRegistration تعریف می شود. مسیر (Route) درخواست ها را بر اساس درخواست Url می فرستد. برای ثبت مسیرها برای Area شما کدهایی را به فایل Global.asax اضافه می کنید که می تواند به صورت اتوماتیک مسیرهای Area را در فایل AreaRegistration پیدا نماید.

AreaRegistration.RegisterAllAreas();

مزایای Area در MVC

 

1- به ما اجازه میدهد که مدل ها ویوها و کنترلرها را در قسمت های کارآمد برنامه مدیریت کنیم. مواردی مانند مدیریت، گزارش ها و پشتیبانی و غیره.

2- سهولت در ادغام با Area های دیگر که توسط دیگران ساخته شده است.

3- سادگی در واحد آزمایش.

 

چگونگی ساخت یک Area در MVC 5

در اینجا یک برنامه mvc 5 با یک کنترلر Home با متد Index به همراه ویو آن داریم. قسمت Solution پروژه را مشاهده می نمایید.

حال می خواهیم یک Area به برنامه اضافه نماییم :

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

 

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

اولین Area برای آقایان

با کلیک روی Add یک پوشه داخل Areas با نام در نظر گرفته شده با مدل، ویو و کنترلر اضافه می شود.

 

حال یک کنترلر در Area آقایان ایجاد می نماییم.

 

این کنترلر دارای اکشن پیش فرض با نام Index می باشد.

حالا یک ویو برای این اکشن در آن Area می سازیم.

بنابراین ما همه چیز به همرا ویو و کنترلرها خواهیم داشت.

 

حالا مراحل قبلی را برای Area خانم ها هم انجام می دهیم.

پس از اضافه کردن همه قسمت ها که برای Area آقایان انجام دادیم حال Solution برنامه ما به شکل زیر خواهد شد.

 

حال اگر ار برنامه اجرا بگیرید با صفحه روبرو مواجه می شوید :
 

 

پیغام این خطا در مورد این است که ما بیش از یک کنترلر با نام Home در برنامه خود داریم.

پس مانند زیر به Area های موجود در برنامه می رویم :
 

 

حالا به RouteConfig.cs رفته تا تغییراتی در مسیرهای برنامه ایجاد نماییم.

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

 

 

حالا برنامه را اجرا می کنیم. دیگر با پیغام خطا که در مورد وجود بیش از چند کنترلر Home بود مواجه نشدیم.

 

حالا اگر شما می خواهید از یک کنترلر پیش فرض به یکی از کنترل هایمان در Area مسیر دهیم باید از دستور ActionLink استفاده نمایید.

 

 

اما ActionLink قبلی تنها در زمانی می تواند انجام گیرد که کنترلر ها در یک دامنه و یا همان Area باشد اما اگر بخواهیم درخواستی به Area دیگری داشته باشیم مانند زیر عمل می نماییم :
 

 

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

فقط کافی است برای هر کدام از یک ActionLink استفاده نماییم.

 

 

حالا برنامه را اجرا کرده و روی هر کدام از لینک ها کلیک می نماییم.

 

این راهی برای رفتن از یک Area به Area دیگر می باشد.

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

 

 

اگر برنامه را دوباره اجرا نمایید می بینید که این ویو به صورت ویو پیش فرض برنامه در آمده است.