MVC ile Şablon Oluşturma, Veri ekleme, silme, güncelleme



LAYOUT (ŞABLON) KURULUMU:
·         Views-Shared klasörü içine _MainLayout adında bir şablon oluşturulur.
·         İstediğimiz şablon şekli buraya verilir.
·         Değişken olacak alana @RenderBody() komutu yazılır.
·         Home klasörü içindeki cshtml sayfaları siliniir.
·         Controller klasöründe HomeController dosyası açılır.
·         İndex alanına sağ tıklanır yeni Views eklenir ve şablonu oluşturduğumuz şablon seçilir.
MODEL OLUŞTURMA:
·         Models-Sağ yık yeni folder oluştur Adını Entity ver
·         Entity sağ tık add-new item – Data seçilir – ADO.Net Entity Data Model seçilir.
·         Servername yazılır, bilgiler girilir kullnacağımız database ve tablolara seçilir.
Verileri Listeleme :
·         CONTROLLER KISMI:
Ø  using MvcStok.Models.Entity; kütüphanesi eklenir.
Ø  Index uzerınde ki satıra  MvcDbStokEntities1 db = new MvcDbStokEntities1(); Kodu yazılır.
Ø  Index içine:
var degerler = db.TBLURUNLER.ToList();
return View(degerler); Kodları yazılır ve controller kısmı tamamlanır.
Ø  Indexten türettiğimiz View sayfası açılır.
·         INDEX KISMI :
Ø  Kütühane eklemek için en üstte ki satıra:
@using MvcStok.Models.Entity
@model List<TBLURUNLER>
Kodları eklenir.
Ø  Tablo oluşturabiliriz yada hazır tema varsa orada değişken olacak verilere şu şekilde kod yazmalılıyız.
@foreach (var urn in Model)
{
<th>@urn.URUNID</th>
}
Ø  Index kısmı da bu kadar. Örnek tablo en alt sayfaya koyulacaktır.

YENİ VERİ EKLEME İŞLEMLERİ

Controller kısmına

[HttpGet]
  public ActionResult YeniVeri()
  {
     
return View();
  }
[HttpPost]
public ActionResult YeniVeri (TabloAdı p1)
{
}
Bu kodlar yazılır. Bu kodlarda Get kısmı sayfada butona tıklanmadığında olacak işlemler da çalışacak komutlardır. Direk sayfayı olduğu gibi göstermesi için kod yazdık. Altındaki ise post olduğunda yani butondan yada formdan veri geldiğinde yapılacak işlemdir. Ekleme kodlarını yazacağız.
Ø  Parantez içine çalışacağımız tablo adını yazıyoruz. Tabi listelemede ki gibi kütüphaneleri eklemiş olmalıyız.
Ø  Çalışacağımız tablo adı ve bir değişken. Örn: TblUrunler p1 gibi
Ø  Bu alanın içine ekleme komutlarını yazıyoruz. Onlar da şu şekilde olacak.
    db.TBLMUSTERILER.Add(p1); Bu kod p1’den gelen değerleri ekleme işlemini yapar. Kaç tane gelirse gelsin tutacak ve ekleyecektir.
db.SaveChanges(); Bu kod işlemi kaydeder.
  return RedirectToAction("Index"); Bu kod ındex sayfasına yönlendirir. Yani listeleme sayfamıza

INDEX SAYFAMIZ İÇİN KODLARI:

Ø  Controllera sağ tıklayıp (YeniVeri) sayfayı layout kullanarak oluşturruz. Ve ekleme için sayfamızda @model MvcStok.Models.Entity.TBLMUSTERILER kütüphanemizi ekleriz.
Ø  <form class="form-group" method="post">
Bu form oluşturulur içerisine kodlar yazılır. Bir div oluştururuz her satır için
<div>
<
label> Müşteri Adı</label> Bu  labelı elimizl bu şekilde yazabiliriz.
@Html.TextBoxFor(m => m.MUSTERIAD, new { @class = "form-control" })
Bu kod bir textbox oluşturur ve içinde ki veri Musteriad veritabanındaki kısmıdır. Buradan giden veriler controllerda p1 yardımıyla alınır. Her kayıt için bir div oluşturup bu sistemle hazırlarsak güzel görünüm oluşur.
</div>
Ø  En son bir buton oluşturulur ve kayıt işlemi yapılır.
<div style="margin-top:15px">
  <button type="submit" class="btn btn-info" id="btn1">Müşteri Ekle</button>
</div>
</
form>
Ø  Kaydetme işlemi bu kadardır.

DROPDOVNLİST EKLEME VE VERİTABANINDAN VERİLERİ GETİRME:

Ø  Controller kısmında Index alanında yani sayfanın ilk görüneceği alanın içine yazılacak kodlar şu şekidedir.
List<SelectListItem> degerler = (from i in db.TBLKATEGORILER.ToList()
select new SelectListItem
{
Text = i.KATEGORIAD,
Value = i.KATEGORIID.ToString()
  }).ToList();
  ViewBag.dgr = degerler;
return View();
Ø  Index kısmında yazılacak kodlar normal ekleme formlarındaki  gibi herşey olacaktır. Tek fark dropdown list olacak alan;
@Html.DropDownListFor(m=> m.TBLKATEGORILER.KATEGORIID, (List<SelectListItem>) ViewBag.dgr, new { @class = "form-control" })
Şeklinde kod olacaktır. Ve ekleme kısmında ki kod normal eklemeden biraz farklı şu şekilde olacaktır.
var ktg = db.TBLKATEGORILER.Where(m => m.KATEGORIID == p1.TBLKATEGORILER.KATEGORIID).FirstOrDefault();
  p1.TBLKATEGORILER = ktg;
Burdan sonrası standart eklemeyle aynıdır.
db.TBLURUNLER.Add(p1);
  db.SaveChanges();
return RedirectToAction("Index");
Ø  Fark olmasındaki sebep biz kategori adını listeliyoruz ama almamız ve kaydetmemiz gereken değer kategorinin id bilgisidir. Bunun için küçük where sorgulu veri ekliyoruz ve inner joini kendisi kuruyor.

SİLME İŞLEMİ:

Ø  Controller kısmına sil adında bir actionresult tanımlanır. Kodlar şu şekilde olacaktır.
public ActionResult SIL(int id)
{
var urun = db.TBLURUNLER.Find(id);
  db.TBLURUNLER.Remove(urun);
db.SaveChanges();
return RedirectToAction("Index");
}
Ø  Kodları açıklayacak olursak. İnt türünde id isminde değişken tanımlanır. Bu değişken sil butonu tarafından silinecek verinin id sini gönderecektir.
var urun ile urunlertablosunda ki id değerinin find fonksiyonu ile buluruz.
remove komutu ile bulunan i dli ürünü sileriz.
yapılan işlemi kayıt ederiz ve listeleme sayfasına yönlendirir bizi.
Ø  Index sayfasındaki kodlar (Yani silme işleminin başlayacağı sayfa kodları)
<td><a href="/Urun/SIL/@urn.URUNID" class="btn btn-danger"> SİL</a></td>
Tablo kullanarak hazırladığımızı düşünürsek td içinde bit buton tanımlarız. Daha doğrusu a href ile link tanımlarız class ile buton görünümüne ulaşır.
hrefini gidecek sayfaya göre veririz. Sayfa controller konumu olmalı en sonda ki sil actionresult adı olmalı. Biz sil verdik. Peşinde ki @ile başlana değerde forect te verdiğimiz değişken ismi urn ve veritabanında ki neye göre sileceksek o değer. Biz id ye göre siliyoruz.
Ø  İşlemler bu kadar.

GÜNCELLEME İŞLEMİ:

Ø  Güncelleme işlemi için controller tarafında 2 tane actionresult tanımlıcaz. Bir tanesi güncellenecek bilgilerin textboxa aktarılması için getir actionresultu olacak.
Ø  Diğeri güncelleme işlemini gerçekleştirecek güncelle actionresultu olacaktır.
Ø  Listeleme sayfasındaki butondan getir actionresultuna yönlendircez ve bu actionresulttan bir views türetmiş olmamız gerek.
Ø  Türettiğimiz bu sayfa da veriler gelecek ve veriler girlip butona basınca bu sayfadan da güncelle alanına gelicez güncelleme yapıcaz. Kodlara bakalım.
public ActionResult MusteriGetir(int id)
        {
var mstr = db.TBLMUSTERILER.Find(id);
return View("MusteriGetir", mstr);
}
public ActionResult Guncelle(TBLMUSTERILER p1)
{
  
var mstr = db.TBLMUSTERILER.Find(p1.MUSTERIID);
  mstr.MUSTERIAD = p1.MUSTERIAD;
  mstr.MUSTERISOYAD = p1.MUSTERISOYAD;
db.SaveChanges();
return RedirectToAction("Index");
}
Ø  Controller kısmı bu kadar şimdi kontrollerda getir action resultundan bir sayfa türetelim ve içine gerekli kodları yazalım.
Bu sayfa layout kullanacak ve kütüphanesi şu şekilde olacak
@model MvcStok.Models.Entity.TBLMUSTERILER  
Ø  Ardından bir form oluşturcaz içinde verilerin geleceği kadar textboxlar
@using (Html.BeginForm("Guncelle", "Musteri", FormMethod.Post))
{
<div class="form-group">
@Html.Label("Müşteri ID")
@Html.TextBoxFor(m => m.MUSTERIID,
new { @class = "form-control" })
<br/>
@Html.Label(
"Müşteri Adı")
@Html.TextBoxFor(m => m.MUSTERIAD,
new { @class = "form-control" })
</div>
<
div class="form-group">
<
button class="btn btn-warning">Müşteri Güncelle</button>
</div>

}
Ø  Burada göründüğü gibi beginformda müşteri üzerinde çalış ve güncelle action resultuna git, metodun post olsun dedik.
Ø  Listeleme yada güncelleme işleminin ilk başlayacağı sayfada güncelle butonu için kod şu şekilde olacak.
   <td><a href="/Musteri/MusteriGetir/@mstr.MUSTERIID" class="btn btn-success"> GÜNCELLE</a></td>
Ø  Diyoruz ki bir link oluştur, müşteri içindeki musterigetir’e gitsin giderken musteriid bilgisini yanında götürsün. Class’ı succes olsun yani sarı bir buton görünümde olsun.
Ø  Controllerda az önce yazdığımız alana gidecek. İşlem tamamdır.

ALERT YANİ EVET/HAYIR YAPIMI:

Ø  Bu özellik mesela silme yaparken silmek istediğinizden emin misiniz ? sorunu sorar
Ø  Html sayfanızda direk yapacağımız işlem  budur tek satırlık bir koddur.
<td>@Html.ActionLink("Müşteri Sil", "SIL", new { id = mstr.MUSTERIID }, new { @class = "btn btn-warning", onclick = "return confirm('Gerçekten silmek istiyor musunuz ?')" }) </td>

Yorumlar

Bu blogdaki popüler yayınlar

Yazıcıda Bekleyen Belgeleri Hızlıca Temizleme

C# ile SQL Veritabanı Yedeğini Alma

SQL SERVER'da sa ve diğer kullanıcıları aktif etme