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.
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.
@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>
}
@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()
public ActionResult YeniVeri()
{
return View();
return View();
}
[HttpPost]
public ActionResult YeniVeri (TabloAdı p1)
[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
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>
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>
<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();
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");
@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");
}
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.
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.
<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");
}
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
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>
}
@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>
<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>
<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
Yorum Gönder