مقدمة في Areas في ASP.NET Core MVC
-
مقدمة الى Areas
Areas في ASP.NET Core MVC هي ميزة لتقسيم التطبيقات الكبيره إلى مجموعات اصغر. الامر الذي يساعد على إدارة التطبيق بطريقة أفضل، بمعني يمكن تقسم التطبيق الى مجموعات مثل Employee ، و Department ، و Payroll ، و Attendance ، و Expense ، إلخ. حيث كل مجموعة يتم عمل MVC (MVC structure) خاص بها من خلال وجود مجلدات فرعية ل Models، و Views، و Controller.
البحث في Views في حال وجود Areas
إذا كانت Controller جزءًا من Area ، فسيتم البحث في المواقع الثلاثة التالية:
/Areas/<AreaName>/Views/<ControllerName>/<ViewName>.cshtml
/Areas/<AreaName>/Views/Shared/<ViewName>.cshtml
/Views/Shared/<ViewName>.cshtml
لفهم ذلك بشكل أفضل. سنقوم أولاً بإضافة folder جديد يسمى " Areas " في root folder. بعد ذلك، قم بإنشاء folder جديد يسمى Admin داخل Areas folder، تمام بهد هيك نضيف Controller جديدة تسمى AdminController داخل مجلد Area Admin.

الان في داخل controller هذه ، قم بإضافة action جديد يسمى StudentList واضف الكود التالي:
using Microsoft.AspNetCore.Mvc;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace StudentsAcademy.Area.Admin
{
[Area("Admin")]
public class AdminController : Controller
{
public IActionResult Index()
{
return View();
}
public IActionResult StudentList()
{
return View();
}
}
}
في اول هذا Controller عملنا إضافة الامر
[Area("Admin")]
والسبب في ذلك هو إخبار MVC بان هذا Controller سيكون من Area التي تحمل الاسم Admin.
لكن حتي نقدر نوصل لهذا View داخل ال Area لازم نعرف مسار Area في ملف Startup. ولعمل ذلك ننتقل الى Startup.cs class واضف مسار area route :
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "AppArea",
pattern: "{area:exists}/{controller=Home}/{action=Index}/{id?}");
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
});
تمام دور نشغل التطبيق بالانتقال الى الرابط :
https://localhost:44382/Admin/Admin/StudentList
ستكون نتيجة التنفيذ خطأ كما في الصورة :

نفهم سبب الخطأ:
هنا طلبنا عرض View باسم StudentList من action، بناء عليه سيبحث MVC عن هذه View في المواقع الثلاثة التالية:
- /Areas/Admin/Views/Admin/StudentList.cshtml
اول مكان بتم البحث فيه، إذا عثر على View في هذا الموقع فإنه يعرض ملف View. إذا لم يكن كذلك، فسيتم البحث عن الموقع التالي.
- /Areas/Admin/Views/Shared/StudentList.cshtml :
ثاني مكان إذا عثر على View هنا فسيتم عرضه. إذا لم يكن كذلك، فسيتم البحث عن الموقع الثالث.
- /Views/Shared/StudentList.cshtml :
اخر مكان يتم البحث فيه،إذا عثر على View هنا ، فسيتم عرض View. اذا ما كان موجود يظهر خطأ في المتصفح.
وبما انه لم نقم بعد بانشاء هذه View لذلك بالتأكيد ستظهر رسالة الخطأ (لاحظ الأماكن التي تم البحث فيها معلمة بالاحمر)

اترك تعليقك