إستخدام الـ Areas في الـ ASP.NET MVC

04 يونيو 2017     273 مشاهدة    0 تعليق
تم النشر في #MVC 

سنتعرف في مقال اليوم عن مفهوم الـ Areas في الـ MVC وسنتعرف على فائدتها.

الـ Areas هي وحدات وظيفية مستقله لأي تطبيق مستخدم تقنية الـ ASP.NET MVC, ويكون لها نفس هيكلية المجلدات المستخدمه في أي تطبيق ألا وهي Models, Views و الـ Controllers.

دعونا نأخذ مثال بسيط لتقريب الفكره, لنفترض أن لدينا متجر إلكتروني يتيح للزبائن التسوق وعمل طلبيات للمنتجات, كما يسمح للإدارة من إدارة الأصناف, المنتجات وطلبياتها. فيمكننا هنا عمل وحدتين وظيفيتنين Modules وهما التسوق Shopping والإدارة Administration. وتختلف عدد الوحدات على حسب طبيعة التطبيق.

ولإضافة Area ماعلينا أن نقوم بالنقر على التطبيق باليمين من وإختيار الخيار Add Area, ومن ثم نقوم بإدخال الإسم المراد. طبعاً الملاحظ أن الـ Area أشب أن تكون بتطبيق MVC مصغر مستقل لأنه يحتوي نفس هيكلية المجلدات الموجودة في أي تطبيق MVC كما ذكرنا سابقاً, ولكن سنلاحظ وجود ملف إضافي خاص بتسجيل الـ Area على النحو التالي:

public class AdministrationAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get
        {
            return "Administration";
        }
    }
 
    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.MapRoute(
            "Administration_default",
            "Admin/{controller}/{action}/{id}",
            new { action = "Index", id = UrlParameter.Optional }
        );
    }
}

كما نلاحظ من الفئه أعلاه, تم الوراثه من الفئه AreaRegistration و تم إعادة كتابة الإجراء RegisterArea() ليقوم بتسجل الـ Routing الخاص بالـ Area عن طريق الفئة AreaRegistrationContext.

وبنفس الطريقة السابقة يتم إنشاء الوحدات الوظيفية اللازمة لأي تطبيق.

وبعدها يتم تسجيل جميع الوحدات المستخدمة في التطبيق في ملف الـ Global.asax على النحو التالي:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();
    ...
}

وأخيراً لإعادة التوجيه إلى أي Action في الـ Administration Area يمكننا إستخدام السطر التالي في الـ Razor:

@Html.ActionLink("AdministrationArea", "Index", "Home", new { area = "Administration" }, null)

أو السطر التالي في الـ Controller:

return RedirectToAction("Index", "Home", new { Area = "Administration" });

خلاصه لما سبق رأينا كيف أنه بإستخدام الـ Areas يمكننا تقسيم أي تطبيق MVC إلى تطيقات مصغرة أو وحدات وظيفية مستقله لتتكامل فيما بينها لبناء التطبيق المراد عمله.

تويتر فيسبوك قوقل + لينكد إن


اكتب تعليقك