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
Web Tabanlı Uygulama Geliştirme Dersi İkinci Dönem İkinci Yazılı Çalışma Soruları
2020 TYT Matematik Ortakatlı Kuralıyla İlgili Sorunun Çözümünü c# Diliyle Web Form Sayfasında Kodlama
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama1
Web Tabanlı Uygulama Geliştirme Dersi İkinci Dönem Birinci Yazılı Çalışma Soruları
Visual Studio 2022 Programında Asp.Net Web Application Şablonu Görünmüyor Hatasını Düzeltme
Core Mvc Projesinde Tuple Nesneleri Post Etme ve Yakalama İşlemleri
Seri Port Yardımıyla Arduino Devresine Bağlanıp Ledleri Asp.Net Web Uygulamasından Yakıp Söndürme
Sitenin Alexa Dünya Sıralamasını Kodlarla Öğrenme
Personele Ait Boy ve Kilo Bilgilerine Göre İdeal Kiloyu Bulan Uygulamayı Asp.Net İle Yapınız
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama4
Bir Otobüs Firmasına Ait Bilet Satış İşlemlerini Class(Sınıf) Tanımlayarak Yapan c# Form Uygulaması
Asp.Net Uygulamasında Manual Olarak JSON Oluşturma
Asp.Net Uygulamalarında Modal PopUp Oluşturma
Web Uygulamalarında SqLite Kullanımı
Asp.Net Uygulamalarında DataList (Veri Listeleme) Kontrolü
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama2
C# Uygulamasında Miladi Takvimi Hicri Takvime, Hicri Takvimi Miladi Takvime Dönüştürme
2022 TYT Matematik Onbirinci Sorunun Çözümünü c# Diliyle Web Form Sayfasında Kodlama
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama3
RadioButton ile Cinsiyet Bilgisini Alan Asp.Net c# Uygulaması

Yorum Ekle
   
Kötü İyi