Blazor - إنشاء Layout عام للتطبيق

🔹 Blazor - إنشاء Layout عام للتطبيق

الـ Layout في Blazor يُستخدم لتعريف الهيكل العام لصفحات التطبيق، مثل: الهيدر، القائمة الجانبية، والفوتر. وبدلًا من تكرار نفس العناصر في كل صفحة، نقوم بتعريفها مرة واحدة داخل Layout واستخدامه في باقي الصفحات.

---

🧱 ما هو Layout في Blazor؟

Layout يشبه الـ _Layout.cshtml في ASP.NET MVC وRazor Pages. يُستخدم لتغليف الصفحات بعناصر تصميم ثابتة.

---

🛠️ خطوات إنشاء Layout مخصص

✅ 1. إنشاء ملف Layout



<div class="container-fluid">
    <header class="bg-dark text-white p-3">
        <h2>🔷 عنوان التطبيق</h2>
    </header>

    <div class="row">
        <aside class="col-3 bg-light p-3">
            <NavLink href="/" class="nav-link" Match="NavLinkMatch.All">🏠 الرئيسية</NavLink>
            <NavLink href="/counter" class="nav-link">➕ العداد</NavLink>
        </aside>

        <main class="col-9 p-4">
            @Body
        </main>
    </div>

    <footer class="bg-dark text-white text-center p-2 mt-4">
        © 2025 - My Blazor App
    </footer>
</div>
---

✅ ما هو @Body؟

العنصر @Body هو المكان الذي يتم فيه حقن محتوى الصفحة داخل الـ Layout. أي صفحة تستخدم هذا Layout سيتم عرض محتواها في هذا الموضع.

---

📥 استخدام Layout في صفحة Blazor


@page "/counter"
@layout MainLayout

<h3>📊 عداد الزيارات</h3>

<p>القيمة الحالية: @count</p>
<button class="btn btn-primary" @onclick="Increment">زيادة</button>

@code {
    int count = 0;

    void Increment()
    {
        count++;
    }
}
---

📌 تعيين Layout كافتراضي للتطبيق

إذا أردت أن يكون Layout هو الافتراضي لكل الصفحات، ضعه في ملف App.razor:



    <Found Context="routeData">
        <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
    </Found>
    <NotFound>
        <h3>❌ الصفحة غير موجودة</h3>
    </NotFound>

---

💡 ملاحظات مهمة

  • يمكنك إنشاء أكثر من Layout وتخصيصه لأقسام مختلفة (مثلاً: Layout للإدارة، وآخر للمستخدم العادي).
  • يمكن تمرير معلمات من Layout إلى الصفحات عن طريق خدمات مشتركة.
  • الـ Layout لا يُعاد تحميله إلا إذا تغيّر بالكامل.
---

✅ خلاصة الدرس

الـ Layout يمنحك طريقة منظمة لتوحيد شكل التطبيق. يسهل إضافة عناصر ثابتة مثل القوائم، الترويسة، والتذييل في كل صفحة دون تكرار.

تعليقات

المشاركات الشائعة من هذه المدونة

C# - Arrays

Entity Framework - ما هو ORM؟ ونبذة عن Dapper وNHibernate

Entity Framework - مقدمة عن Entity Framework