در اصل Layout یک یا چند قالب اصلی برای ایجاد صفحات وب است که بخشهای ثابت و مشترک بین صفحات مختلف را در خود نگه میدارد. به عبارت دیگر، Layout یک فایل Razor است که شامل ساختار HTML پایه و اجزای ثابت سایت میباشد و میتواند توسط سایر صفحات – Viewها استفاده شود. Layout یک ابزار قدرتمند در ASP.NET Core است که توسعه و نگهداری وبسایتها را سادهتر و موثرتر میکند. در این آموزش Asp.Net Core به آموزش کار با Layout ها میپردازیم.
ابتدا روی فولدر Shared کلیک راست کرده و از گزینه Add گزینه New Item را انتخاب میکنیم.
در پنجره جدید گزینه Show All Templates را انتخاب میکنیم.
و Layout را سرج کرده و گزینه Razor Layout را انتخاب میکنیم.
متد RenderBody وظیفه دارد محتوایی که ما در View قرار میدهیم را بگیرد و به بخشی که در Layout ما این تابع را نوشته ایم فراخوانی کند. به صورت مختصر میتوان گفت که محتوای اصلی و متغییر سایت را فرا میخواند. این تابع در صفحه Layout باید درست در جایی باشد که ما میخواهییم محتوای سایت درون آن قرار گیرد. توجه داشته باشید که هر Layout فقط و فقط یک RenderBody میتواند داشته باشد.
تعریف در Layout
@RenderBody()
همه محتوای سایت ما در RenderBody قرار گرفته که این موضوع محدودیت برای ما ایجاد میکند برای حذف این محدودیت از RenderSection در کنار RenderBody استفاده میکنیم و بر عکس RenderBody میتوانیم بی نهایت RenderSection در یک Layout داشته باشیم. RenderSection یک مقدار True و یا False هم میگیرد اگر مقدار آن True باشد پر کردن این سکشن در View اجباری است و اگر آن را پر نکنیم ارور میدهد ولی اگر مقدار آن False باشد دیگر اختیاری است.
تعریف در Layout
@await RenderSectionAsync("HederText", required:true)
استفاده در View
@section HederText{
<h2>Hello World</h2>
}
RenderBody و RenderSection در ASP.NET Core متدهایی هستند که در صفحات Razor استفاده میشوند تا محتوای صفحات فرزند را در فایلهای Layout نمایش دهند. این متدها از کلاسهای مربوط به Razor Page و View Engine آمدهاند و به عنوان بخشی از زیرساختهای رندرینگ صفحات در ASP.NET Core عمل میکنند.