Sayfalar

26 Nisan 2013 Cuma

ASP.NET MVC DERSLERİ ( 5.3.3 ) HTML HELPERS Html.DropDownList & Html.ListBox

Html.DropDownList ve Html.ListBox, her iki elemanda html çıktısı olarak <select> elemanını üretirler. Dropdownlist liste içerisinden sadece bir eleman seçilmesine izin verirken, Listbox, birden fazla elemanın seçimine izin verir.

Select, html elemanı iki şekilde kullanılır.
  1. Liste içerisinden bir eleman seçmek
  2. Var olan alan için geçerli değeri göstermek
Örneğin HaberPortal uygulamasında, haber eklerken haber için yazar seçimi ve ya kategori seçimi, dropdownlist içerisinden olacaktır. Haber için etiket seçiminide Listbox içerisinden seçeceğiz.

Bu iki elemanı kullanırken, controller sınıfı içerisinde birkaç işlem yapmak gerekecektir. Bu helper elemanları bir liste nesnesine ihtiyaç duyarlar; SelectList. SelectList nesnesi , Text,Value ve Selected özelliklerine sahiptir. Veritabanından yazarları ve ya kategorileri çekip bu liste tipinde view sayfamıza geçirmemiz gerekiyor. Örneğin kategorileri ele alırsak,

Html.DropDownList
public ActionResult HaberDuzenle(int id)
{
    var haber = db.Haber.Find(id);
    ViewBag.KategoriId= new SelectList(db.Kategori.OrderBy(k => k.Ad),
    "Id", "Ad", haber.KategoriId);
    return View(haber);
}

HaberDuzenle sayfasına haber nesnesini gönderirken, ViewBag içerisinde kategorileride ekleyerek gönderiyoruz. Burada bir önemli nokta, SelectList nesnesinin son parametresi haber.KategoriId bunun anlamı o heber için en son hangi kategori seçilmiş ve kaydedilmişse, sayfa yüklendiğinde dropdownlist içerisinde o kategori seçili olarak gelsin.

View sayfası içerisinde aşağıdaki gibi bir kullanım ile dropdownlist elemanı sayfada oluşturulacaktır.
@Html.Dropdownlist("KategoriId");

Html.ListBox
public ActionResult HaberDuzenle()
{
    var haber = db.Haber.Find(id);
    ViewBag.KategoriId= new MultiSelectList(db.Kategori.OrderBy(k => k.Ad),
    "Id", "Ad", null);
    return View(haber);
}

View sayfası
@Html.ListBox("KategoriId", ViewBag.KategoriId as MultiSelectList)

ListBox için Kategori id aslında bir dizidir. Bu diziyi string dizisi veya int dizisi olarak tanımlayabiliriz. Bilmemiz gerek seçilen elemanların id lerinin gönderildiği.

NOT: Kaynak kodunu vereceğim HaberPortal isimli örnek bir uygulama yapmaya çalışıyorum. Haber ekleme kısmını ekleyip, kodları paylaşacağım. Dersler boyunca geliştirilmesi devam edecek. Bu anlattıklarımın birçoğunu uygulama içerisinde kullanıyorum. Ayrıca html helper elemanlarını, sonraki derslerde anlatacağım strongly-typed helperlar ile yapıyorum. 

Hiç yorum yok:

Yorum Gönder