ما هيLayout.cshtml_
-
اكيد كل تطبيق بكون في تصميم خاص له، والتصميم يطلق عليه اسم UI، وممكن يكون في التطبيق اكثر من تصميم مثلا تصميم ل admin تصميم End User وهكذا، بحيث يتم تطبيق كل تصميم على مجموعة من Views، فبدل من ان يتم تكرار التصميم في جميع ال Views يمكن انشاء التصميم في ملف واحد وبعدها يمكن استخدام هذا التصميم في ملفات View مع إضافة تغيرات خاصة بكل View (تمام كما هي فكرة Master Page في Asp.net).
يحتوي ASP.NET Core على طريقة Layout view التي يوفرها ملف Layout.cshtml_. بحيث يمكن اضافة أجزاء مشتركة لواجهة المستخدم UI parts، وتطبيقها داخل View بحيث لا تضطر إلى كتابة نفس الكود في كل View.
يجب ان يتم إضافة هذا الملف Layout.cshtml_ داخل مجلد Views ➤ Shared.
تمام نبدأ وكالعاده بانشاء مشروع حتي نفهم الموضوع بشكل افضل.
اكيد بنكمل شغل على المشروع StudentAcademy ، ونتأكد من وجود ملف باسم Layout.cshtml_ في Views- Shared، إذاما كان هذا الملف موجد في التطبيق، انقر بزر الماوس الأيمن فوق Shared folder وحدد Add New Item. ثم حدد Razor Layout من قائمة العناصر وانقر فوق الزر Add. تحقق من الصورة أدناه التي توضح ذلك:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - StudentsAcademy</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" />
</head>
<body>
<header>
<nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
<div class="container">
<a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">StudentsAcademy</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-collapse collapse d-sm-inline-flex justify-content-between">
<ul class="navbar-nav flex-grow-1">
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</li>
</ul>
</div>
</div>
</nav>
</header>
<div class="container">
<main role="main" class="pb-3">
@RenderBody()
</main>
</div>
<footer class="border-top footer text-muted">
<div class="container">
© 2021 - StudentsAcademy - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
</div>
</footer>
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
<script src="~/js/site.js" asp-append-version="true"></script>
@await RenderSectionAsync("Scripts", required: false)
</body>
</html>
@ViewData["Title"]
@RenderBody()
@{
Layout = "~/Views/Shared/_Layout.cshtml";
}

@{
Layout = "~/Views/Shared/_Layout.cshtml";
}
@ {Layout = null؛}
اترك تعليقك