c# Web

Öğrencilere Ait Performans ve Uygulama Notlarının Girildiği Core Mvc Projesi Tasarlama5

Her rol için ayrı klasör oluşturup kendi master page (layout) dosyalarını ve ViewStart yapılarını oluşturalım. Bu şekilde karışıklık olmayacak ve her panelin kendine özgü tasarımı olacaktır. Aşağıda nasıl yapacağını detaylı şekilde anlatıyorum.

📂 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.

Bu yapıyla her kullanıcı grubunun kendi klasörü, master page (layout) dosyası ve ayrı görünüm ayarları olur. Karışıklık önlenir ve yönetim kolaylaşır. Bir sonraki adımda giriş kontrolü ve yetkilendirme ekleyebiliriz.


İlgili Makaleler
SqLite Programında Uyeler Tablosuyla İlgili Tüm İşlemleri Gerçekleştiren c# Web Uygulaması
Web Uygulamalarında SqLite Veritabanında Uyeler Tablosunda Kayıtları Listeleme
Web Uygulamalarında SqLite Kullanımı
Web Uygulamalarında SqLite Veritabanını Oluşturma
Web Uygulamalarında SqLite Veritabanında Uyeler Tablosuna Kayıt Girişi Yapma
Web Uygulamalarında SqLite Veritabanında Uyeler Tablosunda Kayıt Silme İşlemini Yapma
Personele Ait Boy ve Kilo Bilgilerine Göre İdeal Kiloyu Bulan Uygulamayı Asp.Net İle Yapınız
Web Uygulamalarında SqLite Veritabanında Uyeler Tablosunda Kayıt Güncelleme İşlemini Yapma
Ürünlere Ait Fiyatları ViewData Kullanarak Listeleyen Core Mvc Uygulaması
Core MVC Uygulamalarında Area Yapısı ile Modüler Tasarım ve Yönlendirme Yönetimi
Web Uygulamalarında Bilgisayarın İnternete Bağlı Olup Olmadığını Kontrol Etme
Öğrencilere Ait Performans ve Uygulama Notlarının Girildiği Core Mvc Projesi Tasarlama5
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama6
Öğrencilere Ait Performans ve Uygulama Notlarının Girildiği Core Mvc Projesi Tasarlama10
Asp.Net Sayfasında jQuery Kullanarak Buton Click Olaylarını Kontrol Etme
Core Mvc Projesinde Otomobil Satışı Yapan Web Projesini Tasarlama3
2020 TYT Matematik Ortakatlı Kuralıyla İlgili Sorunun Çözümünü c# Diliyle Web Form Sayfasında Kodlama
Visual Studio 2022 Programında Asp.Net Web Application Şablonu Görünmüyor Hatasını Düzeltme
Web Uygulamalarında SqLite Veritabanında Uyeler Tablosunu Oluşturma
Asp.Net İle Koordinat Düzleminde İki Noktanın Uzunluğunu Bulma

Yorum Ekle
   
Kötü İyi