c# Web

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

Sınıflara ait dersleri atama işlemini ve CRUD işlemlerini gerçekleştirebiliriz. Aşağıda DersAra için gerekli adımlar ve dosya yapısı yer alıyor.

Controllers/Admin/DersAraController.cs dosyasını oluşturarak CRUD işlemlerini gerçekleştirelim.

using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.EntityFrameworkCore;
using SchoolManagement.Data;
using SchoolManagement.Models;

namespace SchoolManagement.Controllers.Admin
{
    //[Area("Admin")]
    [Authorize(Roles = "Admin")] // Sadece admin kullanıcıları erişebilecek
    public class DersAraController : Controller
    {
        private readonly ApplicationDbContext _context;

        public DersAraController(ApplicationDbContext context)
        {
            _context = context;
        }

        // GET: Admin/DersAra
        public async Task<IActionResult> Index()
        {
            var dersAra = await _context.DersAralar
                .Include(d => d.Ders)
                .Include(d => d.Sinif)
                .ToListAsync();

            return View("~/Views/Admin/DersAra/Index.cshtml", dersAra);
        }

        // GET: Admin/DersAra/Details/5
        public async Task<IActionResult> Details(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }

            var dersAra = await _context.DersAralar
                .Include(d => d.Ders)
                .Include(d => d.Sinif)
                .FirstOrDefaultAsync(m => m.Id == id);

            if (dersAra == null)
            {
                return NotFound();
            }

            return View("~/Views/Admin/DersAra/Details.cshtml",dersAra);
        }

        // GET: Admin/DersAra/Create
        public IActionResult Create()
        {
            ViewData["DersId"] = new SelectList(_context.Dersler, "Id", "DersAdi");
            ViewData["SinifId"] = new SelectList(_context.Siniflar, "Id", "SinifAdi");
            return View("~/Views/Admin/DersAra/Create.cshtml");
        }

        // POST: Admin/DersAra/Create
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Create([Bind("Id,DersId,SinifId")] DersAra dersAra)
        {
            if (!ModelState.IsValid)
            {
                // Check if this course is already assigned to this class
                var exists = await _context.DersAralar
                    .AnyAsync(d => d.DersId == dersAra.DersId && d.SinifId == dersAra.SinifId);

                if (exists)
                {
                    ModelState.AddModelError("", "Bu ders zaten bu sınıfa atanmış.");
                    ViewData["DersId"] = new SelectList(_context.Dersler, "Id", "DersAdi", dersAra.DersId);
                    ViewData["SinifId"] = new SelectList(_context.Siniflar, "Id", "SinifAdi", dersAra.SinifId);
                    return View("~/Views/Admin/DersAra/Create.cshtml", dersAra);
                }

                _context.Add(dersAra);
                await _context.SaveChangesAsync();
                return RedirectToAction(nameof(Index));
            }

            ViewData["DersId"] = new SelectList(_context.Dersler, "Id", "DersAdi", dersAra.DersId);
            ViewData["SinifId"] = new SelectList(_context.Siniflar, "Id", "SinifAdi", dersAra.SinifId);
            return View("~/Views/Admin/DersAra/Create.cshtml",dersAra);
        }

        // GET: Admin/DersAra/Edit/5
        public async Task<IActionResult> Edit(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }

            var dersAra = await _context.DersAralar.FindAsync(id);
            if (dersAra == null)
            {
                return NotFound();
            }

            ViewData["DersId"] = new SelectList(_context.Dersler, "Id", "DersAdi", dersAra.DersId);
            ViewData["SinifId"] = new SelectList(_context.Siniflar, "Id", "SinifAdi", dersAra.SinifId);
            return View("~/Views/Admin/DersAra/Edit.cshtml",dersAra);
        }

        // POST: Admin/DersAra/Edit/5
        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> Edit(int id, [Bind("Id,DersId,SinifId")] DersAra dersAra)
        {
            if (id != dersAra.Id)
            {
                return NotFound();
            }

            if (ModelState.IsValid)
            {
                try
                {
                    // Check if this course is already assigned to this class (excluding the current record)
                    var exists = await _context.DersAralar
                        .AnyAsync(d => d.DersId == dersAra.DersId &&
                                   d.SinifId == dersAra.SinifId &&
                                   d.Id != dersAra.Id);

                    if (exists)
                    {
                        ModelState.AddModelError("", "Bu ders zaten bu sınıfa atanmış.");
                        ViewData["DersId"] = new SelectList(_context.Dersler, "Id", "DersAdi", dersAra.DersId);
                        ViewData["SinifId"] = new SelectList(_context.Siniflar, "Id", "SinifAdi", dersAra.SinifId);
                        return View(dersAra);
                    }

                    _context.Update(dersAra);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!DersAraExists(dersAra.Id))
                    {
                        return NotFound();
                    }
                    else
                    {
                        throw;
                    }
                }
                return RedirectToAction(nameof(Index));
            }

            ViewData["DersId"] = new SelectList(_context.Dersler, "Id", "DersAdi", dersAra.DersId);
            ViewData["SinifId"] = new SelectList(_context.Siniflar, "Id", "SinifAdi", dersAra.SinifId);
            return View("~/Views/Admin/DersAra/Edit.cshtml", dersAra);
        }

        // GET: Admin/DersAra/Delete/5
        public async Task<IActionResult> Delete(int? id)
        {
            if (id == null)
            {
                return NotFound();
            }

            var dersAra = await _context.DersAralar
                .Include(d => d.Ders)
                .Include(d => d.Sinif)
                .FirstOrDefaultAsync(m => m.Id == id);

            if (dersAra == null)
            {
                return NotFound();
            }

            return View("~/Views/Admin/DersAra/Delete.cshtml", dersAra);
        }

        // POST: Admin/DersAra/Delete/5
        [HttpPost, ActionName("Delete")]
        [ValidateAntiForgeryToken]
        public async Task<IActionResult> DeleteConfirmed(int id)
        {
            var dersAra = await _context.DersAralar.FindAsync(id);
            _context.DersAralar.Remove(dersAra);
            await _context.SaveChangesAsync();
            return RedirectToAction(nameof(Index));
        }

        private bool DersAraExists(int id)
        {
            return _context.DersAralar.Any(e => e.Id == id);
        }
    }
}

Menüde, Sınıflar ve Dersler için yeni bir buton ekleyelim. Bu buton, DersAraController'ın Index action'ına yönlendirecek.

<!-- Atama İşlemleri Dropdown Menüsü -->
<li class="nav-item dropdown">
    <a class="nav-link dropdown-toggle" href="#" id="atamaDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
        Atama İşlemleri
    </a>
    <ul class="dropdown-menu" aria-labelledby="atamaDropdown">
        <li><a class="dropdown-item" asp-controller="DersAra" asp-action="Index">Sınıf ve Dersler</a></li>
    </ul>
</li>

Sınıf ve derslerin listeleneceği ana sayfayı Views/Admin/DersAra/Index.cshtml dosyasına ekleyelim.

@model IEnumerable<SchoolManagement.Models.DersAra>

@{
    ViewData["Title"] = "Sınıf-Ders Atamaları";
}

<h1>Sınıf-Ders Atamaları</h1>

<p>
    <a asp-action="Create" class="btn btn-primary">Yeni Atama</a>
</p>
<table class="table table-striped table-bordered">
    <thead>
        <tr>
            <th>
                Sınıf
            </th>
            <th>
                Ders
            </th>
            <th>İşlemler</th>
        </tr>
    </thead>
    <tbody>
        @foreach (var item in Model)
        {
            <tr>
                <td>
                    @Html.DisplayFor(modelItem => item.Sinif.SinifAdi)
                </td>
                <td>
                    @Html.DisplayFor(modelItem => item.Ders.DersAdi)
                </td>
                <td>
                    <a asp-action="Edit" asp-route-id="@item.Id" class="btn btn-sm btn-warning">Düzenle</a> |
                    <a asp-action="Details" asp-route-id="@item.Id" class="btn btn-sm btn-info">Detaylar</a> |
                    <a asp-action="Delete" asp-route-id="@item.Id" class="btn btn-sm btn-danger">Sil</a>
                </td>
            </tr>
        }
    </tbody>
</table>

Sınıfa yeni Ders eklemek için Views/Admin/DersAra/Create.cshtml dosyasını oluşturacağız.

@model SchoolManagement.Models.DersAra

@{
    ViewData["Title"] = "Yeni Ders Atama";
}

<h1>Yeni Ders Atama</h1>

<hr />
<div class="row">
    <div class="col-md-6">
        <form asp-action="Create">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <div class="form-group mb-3">
                <label asp-for="SinifId" class="control-label">Sınıf</label>
                <select asp-for="SinifId" class="form-control" asp-items="ViewBag.SinifId"></select>
                <span asp-validation-for="SinifId" class="text-danger"></span>
            </div>
            <div class="form-group mb-3">
                <label asp-for="DersId" class="control-label">Ders</label>
                <select asp-for="DersId" class="form-control" asp-items="ViewBag.DersId"></select>
                <span asp-validation-for="DersId" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Kaydet" class="btn btn-primary" />
                <a asp-action="Index" class="btn btn-secondary">Listeye Dön</a>
            </div>
        </form>
    </div>
</div>

Eklenen dersi düzenleme işlemi için Views/Admin/DersAra/Edit.cshtml dosyasını ekleyelim.

@model SchoolManagement.Models.DersAra

@{
    ViewData["Title"] = "Ders Atama Düzenle";
}

<h1>Ders Atama Düzenle</h1>

<hr />
<div class="row">
    <div class="col-md-6">
        <form asp-action="Edit">
            <div asp-validation-summary="ModelOnly" class="text-danger"></div>
            <input type="hidden" asp-for="Id" />
            <div class="form-group mb-3">
                <label asp-for="SinifId" class="control-label">Sınıf</label>
                <select asp-for="SinifId" class="form-control" asp-items="ViewBag.SinifId"></select>
                <span asp-validation-for="SinifId" class="text-danger"></span>
            </div>
            <div class="form-group mb-3">
                <label asp-for="DersId" class="control-label">Ders</label>
                <select asp-for="DersId" class="form-control" asp-items="ViewBag.DersId"></select>
                <span asp-validation-for="DersId" class="text-danger"></span>
            </div>
            <div class="form-group">
                <input type="submit" value="Kaydet" class="btn btn-primary" />
                <a asp-action="Index" class="btn btn-secondary">Listeye Dön</a>
            </div>
        </form>
    </div>
</div>

Sınıfa atanan dersi silme işlemi için Views/Admin/DersAra/Delete.cshtml dosyasını oluşturalım.

@model SchoolManagement.Models.DersAra

@{
    ViewData["Title"] = "Ders Atama Sil";
}

<h1>Ders Atama Sil</h1>

<h3>Bu ders atamasını silmek istediğinize emin misiniz?</h3>
<div>
    <hr />
    <dl class="row">
        <dt class="col-sm-3">Sınıf:</dt>
        <dd class="col-sm-9">@Html.DisplayFor(model => model.Sinif.SinifAdi)</dd>

        <dt class="col-sm-3">Ders:</dt>
        <dd class="col-sm-9">@Html.DisplayFor(model => model.Ders.DersAdi)</dd>
    </dl>

    <form asp-action="Delete">
        <input type="hidden" asp-for="Id" />
        <input type="submit" value="Sil" class="btn btn-danger" /> |
        <a asp-action="Index" class="btn btn-secondary">Listeye Dön</a>
    </form>
</div>

Etiketler
core mvc create edit delete views 
İ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
RadioButton ile Cinsiyet Bilgisini Alan Asp.Net c# Uygulaması
Core Mvc Projesinde SqlServer Kullanarak Üye Takibi Yapan Web Projesini Tasarlama3

Yorum Ekle
   
Kötü İyi