Core Mvc web projesinin tasarım kısmını halletmiş olduk. Personel listesinin oluşturulması ve seçilen personelin gösterilmesi işlemlerini gerçekleştirelim. Ben bu işlemler için yeni bir controller oluşturacağım. Bu controller yardımıyla listeleme, arama, silme ve düzenleme işlemlerini gerçekleştireceğim.
Controller klasörüne gelelim. Burada PersonelManager isminde bir controller oluşturalım. Burada oluşan Index dosyasıyla personele ait listeleri getireceğim. Index view dosyasını oluşturalım. Öncelikle controller tarafında sanal veri tabanı ile ilgili gerekli tanımlamaları yapalım.
private readonly SanalVeritabani _context;
public PersonelManagerController(SanalVeritabani context)
{
_context = context;
}
public IActionResult Index()
{
return View(model: _context.Personeller);
}
Şimdi personel listesinin alınacağı Index dosyasını oluşturalım.
@model List<Personel>
@{
ViewData["Title"] = "Personel Listesi";
}
<h1>Personel Listesi</h1>
<table class="table table-striped">
<thead>
<tr>
<th>Personel No</th>
<th>Ad</th>
<th>Soyad</th>
<th>Maaş</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@item.PersonelNo</td>
<td>@item.Ad</td>
<td>@item.Soyad</td>
<td>@item.Maas</td>
</tr>
}
</tbody>
</table>
Projeyi kaydedip çalıştıralım. Web sayfasında Personel Listesi linkine tıkladığımızda hata verecehtir. Çünkü oluşturduğumuz controller ve Index dosyasını belirtmedik. _Layout sayfasında personel listesine ait linki düzenleyelim.
<a class="list-group-item" asp-controller="PersonelManager"
asp-action="Index"><i class="bi bi-people-fill"></i>
Personel Listesi</a>
Projeyi kaydedip çalıştıralım. Web sayfasında Personel Listesinin oluştuğunu görürsünüz. Bu liste üzerinde seçilen personeli gösterme, silme ya da düzeltme işlemelrini yapacağız. Bunun için tablomuza bir sütun daha ekleyelim. Herbir personel için bu işlemleri tanımlayalım.
@model List<Personel>
@{
ViewData["Title"] = "Personel Listesi";
}
<h1>Personel Listesi</h1>
<table class="table table-striped">
<thead>
<tr>
<th>Personel No</th>
<th>Ad</th>
<th>Soyad</th>
<th>Maaş</th>
<th>İşlemler</th>
</tr>
</thead>
<tbody>
@foreach (var item in Model)
{
<tr>
<td>@item.PersonelNo</td>
<td>@item.Ad</td>
<td>@item.Soyad</td>
<td>@item.Maas</td>
<td>
<a asp-controller="PersonelManager"
asp-action="Detaylar" asp-route-id="@item.PersonelNo"
class="btn btn-info">
<i class="bi bi-info-circle-fill"></i> Detaylar</a>
<a asp-controller="PersonelManager"
asp-action="Duzenle" asp-route-id="@item.PersonelNo"
class="btn btn-warning">
<i class="bi bi-pencil-square"></i> Düzenle</a>
<a href="#" class="btn btn-danger"
data-bs-toggle="modal" data-bs-target="#silModal@(item.PersonelNo)">
<i class="bi bi-trash3-fill"></i> Sil</a>
</td>
</tr>
}
</tbody>
</table>
Projeyi kaydedip çalıştıralım. Web sayfasında Personel Listesinin yanında yapılacak işlemler için gerekli butonları görürsünüz. Şimdi Detaylar butonuna basıldığında ilgili personele ait resim dahil tüm bilgileri ekrana getirelim. Bunun için Detaylar isminde bir olaya ihtiyacımız olacaktır. İlgili metodu tanımlayalım.
public IActionResult Detaylar(int id)
{
var personel = _context.Personeller.SingleOrDefault(p =>
p.PersonelNo == id);
return View(model: personel);
}
Şimdi de elde edilen değerleri göstermesi için Detaylar view dosyasını oluşturalım.
@model Personel
@{
ViewData["Title"] = "Personel Detayları";
}
<h1>Personel Detayları</h1>
<div class="card" style="width: 18rem;">
<img src="~/img/personel/@Model.Resim" class="card-img-top"
title="Personel resmi">
<div class="card-body">
<h5 class="card-title">@Model.Ad @Model.Soyad</h5>
<p class="card-text">
<strong>Personel No:</strong> @Model.PersonelNo
</p>
<p class="card-text">
<strong>Adres:</strong> @Model.Adres
</p>
<p class="card-text">
<strong>Maaş:</strong> @Model.Maas
</p>
<a asp-controller="PersonelManager" asp-action="Index"
class="btn btn-primary">Listeye Geri Dön</a>
</div>
</div>
Projeyi kaydedip çalıştıralım. Web sayfasında Personel Listesinin yanında Detaylar butonuna tıklayalım. Personelin resmi dahil tüm bilgilerin ekrana geldiğini görürsünüz.