📂 Klasör Yapısı
Views/
📁 Admin/
📁 Shared/
📄 _AdminLayout.cshtml
📄 _ViewStart.cshtml
📄 Dashboard.cshtml
📁 Teacher/
📁 Shared/
📄 _TeacherLayout.cshtml
📄 _ViewStart.cshtml
📄 Dashboard.cshtml
📁 Student/
📁 Shared/
📄 _StudentLayout.cshtml
📄 _ViewStart.cshtml
📄 Dashboard.cshtml
📁 Shared/
📄 _ViewImports.cshtml
1. Layout Dosyaları (MasterPage)
Her bir panel için ayrı layout dosyası oluşturacağız.
Admin Layout (Admin Paneli)
📄 Views/Admin/Shared/_AdminLayout.cshtml
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Admin Paneli</title>
<link href="~/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<script src="~/lib/jquery/jquery.min.js"></script>
<script src="~/lib/bootstrap/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="row">
<nav class="col-md-3 col-lg-2 d-md-block bg-dark sidebar">
<div class="position-sticky">
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link text-white" asp-controller="Admin" asp-action="Dashboard">Dashboard</a>
</li>
<li class="nav-item">
<a class="nav-link text-white" asp-controller="Admin" asp-action="Users">Üyeler</a>
</li>
</ul>
</div>
</nav>
<main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">
@RenderBody()
</main>
</div>
</div>
</body>
</html>
Öğretmen Layout (Teacher Paneli)
📄 Views/Teacher/Shared/_TeacherLayout.cshtml
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Öğretmen Paneli</title>
<link href="~/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<script src="~/lib/jquery/jquery.min.js"></script>
<script src="~/lib/bootstrap/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="row">
<nav class="col-md-3 col-lg-2 d-md-block bg-primary sidebar">
<div class="position-sticky">
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link text-white" asp-controller="Teacher" asp-action="Dashboard">Dashboard</a>
</li>
<li class="nav-item">
<a class="nav-link text-white" asp-controller="Teacher" asp-action="Classes">Sınıflar</a>
</li>
</ul>
</div>
</nav>
<main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">
@RenderBody()
</main>
</div>
</div>
</body>
</html>
Öğrenci Layout (Student Paneli)
📄 Views/Student/Shared/_StudentLayout.cshtml
<!DOCTYPE html>
<html lang="tr">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Öğrenci Paneli</title>
<link href="~/lib/bootstrap/css/bootstrap.min.css" rel="stylesheet" />
<script src="~/lib/jquery/jquery.min.js"></script>
<script src="~/lib/bootstrap/js/bootstrap.bundle.min.js"></script>
</head>
<body>
<div class="container-fluid">
<div class="row">
<nav class="col-md-3 col-lg-2 d-md-block bg-success sidebar">
<div class="position-sticky">
<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link text-white" asp-controller="Student" asp-action="Dashboard">Dashboard</a>
</li>
<li class="nav-item">
<a class="nav-link text-white" asp-controller="Student" asp-action="Courses">Dersler</a>
</li>
</ul>
</div>
</nav>
<main class="col-md-9 ms-sm-auto col-lg-10 px-md-4">
@RenderBody()
</main>
</div>
</div>
</body>
</html>
2. _ViewStart.cshtml Dosyaları
Bu dosya, ilgili klasördeki tüm View dosyalarının varsayılan layout'unu belirler.
📄 Views/Admin/_ViewStart.cshtml
@{
Layout = "~/Views/Admin/Shared/_AdminLayout.cshtml";
}
📄 Views/Teacher/_ViewStart.cshtml
@{
Layout = "~/Views/Teacher/Shared/_TeacherLayout.cshtml";
}
📄 Views/Student/_ViewStart.cshtml
@{
Layout = "~/Views/Student/Shared/_StudentLayout.cshtml";
}
3. Controller'ların Oluşturulması
Projede Controllers klasörü altında her kullanıcı türü için ayrı klasörler oluşturacağız:
Controllers/
📁 Admin/
📄 AdminController.cs
📁 Teacher/
📄 TeacherController.cs
📁 Student/
📄 StudentController.cs
Bu yapı sayesinde her controller kendi klasöründe yer alacak ve yönetimi kolaylaştıracaktır.
Controllers/Admin/AdminController.cs
using Microsoft.AspNetCore.Mvc;
namespace SchoolManagement.Controllers.Admin
{
public class AdminController : Controller
{
public IActionResult DashBoard()
{
return View();
}
}
}
Controllers/Teacher/TeacherController.cs
using Microsoft.AspNetCore.Mvc;
namespace SchoolManagement.Controllers.Teacher
{
public class TeacherController : Controller
{
public IActionResult Dashboard()
{
return View();
}
}
}
Controllers/Student/StudentController.cs
using Microsoft.AspNetCore.Mvc;
namespace SchoolManagement.Controllers.Student
{
public class StudentController : Controller
{
public IActionResult Dashboard()
{
return View();
}
}
}
4. Route Ayarları
Program.cs içinde route yapılandırması:
app.MapControllerRoute(
name: "admin",
pattern: "admin/{controller=Admin}/{action=Dashboard}/{id?}");
app.MapControllerRoute(
name: "teacher",
pattern: "teacher/{controller=Teacher}/{action=Dashboard}/{id?}");
app.MapControllerRoute(
name: "student",
pattern: "student/{controller=Student}/{action=Dashboard}/{id?}");
5. _ViewImports.cshtml dosyasının yapılandırılması
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
Bu satır, tüm tag helper'ların (özellikle asp-controller, asp-action gibi) çalışmasını sağlayacaktır.