MVC Dropdownlist Kullanımı

19 Şubat 2013
Posted by Çağatay Yıldız
11073 Views
MVC

Bu yazımızıda Microsoftun ASP.Net için geliştirdiği MVC yapısında Dropdownlist kullanımına dair bir örnek vereceğiz. İlerleyen günlerde Microsoftun bu teknolojisiyle ilgili kimi paylaşımlarda bulunmaya devam edeceğim.

Gelelim örneğimize. Öncelikle bir classımızda Saat isimli string tipinde bir list oluşturuyoruz. Bu Listeyi daha sonra DropdownList e data source olarak vereceğiz.

Oluşturduğumuz saat listesi şu şekilde;


public List SaatListesi()
 {
 List SaatList = new List();
 SaatList.Add("00");
 SaatList.Add("01");
 SaatList.Add("02");
 SaatList.Add("03");
 SaatList.Add("04");
 SaatList.Add("05");
 SaatList.Add("06");
 SaatList.Add("07");
 SaatList.Add("08");
 SaatList.Add("09");
 SaatList.Add("10");
 SaatList.Add("11");
 SaatList.Add("12");
 SaatList.Add("13");
 SaatList.Add("14");
 SaatList.Add("15");
 SaatList.Add("16");
 SaatList.Add("17");
 SaatList.Add("18");
 SaatList.Add("19");
 SaatList.Add("20");
 SaatList.Add("21");
 SaatList.Add("22");
 SaatList.Add("23");

return SaatList;
 }

Bu listemiz SaatDakika isimli bir class ımızın içinde mevcut. Bunu kullanmak için o class tan instance alıp türetmemiz gerek. (Dilerseniz Listeyi aynı katman içine yazıp türetmeden de kullanabilirsiniz)

Controller kısmında ise kod bloğumuz şu şekilde


SaatDakika stdk = new SaatDakika();
 ViewData["SaatList"] = stdk.SaatListesi().Select(s => new SelectListItem { Value = s.ToString(), Text = s.ToString()});

Kod bloğunda görüldüğü gibi string listemizi SelectListItem e dönüştürüyoruz. Bunun nedeni ise DropdownList in data source tipinin SelectListItem olmasıdır. İçindeki string değerleri SelectListItem  value eşit kıldık. Aynı şekilde text te görülecek değerleri de eşitlemiş olduk.
Daha sonra bunu ViewData da belirlediğimiz “SaatList” ile View kısmına taşıyacağız. View kısmına geçmeden önce Dropdownda bulunan item ı seçtiğimizde taşımamız için model kısmında SaatModel isimli bir public class oluşturuyoruz ve içine aşağıda görüldüğü gibi get ve set metotları olan bir property yazıyoruz.


public string Saat { get; set; }

Yukarıdaki model sayesinde seçilen item ı dilediğimiz gibi taşıyabileceğiz. Gelelim View kısmına.


@Html.DropDownList("Saat", (IEnumerable)ViewData["SaatList"], "Seçiniz")

ViewData ile View katmanına taşıdığımız Saat Listesini IEnumerable tipinden bir SelectItem a cast ediyoruz. Parantezden hemen sonra yazan “Saat” ise seçilen verinin taşınacağı isimdir. Yani model kısmına yazdığımız string tipli isimli “Saat” değişkeni. Seçiniz isimli string ise default olarak gelen değişken. yani 0 a eşit value değeri. Peki seçtiğimiz değişkeni nasıl taşıyacağız? İşlem oldukça basit. Sayfamızın post edilen controller kısmına aşağıdaki kod bloğunu yazıyoruz.


string secilensaat = SaatModel.Saat;

Böylelikle seçilen item ı elde ettik.

Eğer veritabanından bir tablo üzerinden bir listeleme yapıp o tabloyu data source olarak göstermek isteseydik Controller bloğu şu şekilde olacaktı;


List KategoriList = CategoryServices.Listele();
 ViewData["KategoriListesi"] = KategoriList.Select(c => new SelectListItem { Value = c.CategoryID.ToString(), Text = c.CategoryName });

CategoryServices isimli class ımız içinde database den çektiğimiz category tablosunun Listele metodunu barındırmakta. (db.Categories.ToList())

View kısmında yine aynı şekilde ViewData ile Listeyi taşıyıp aynı işlemi uygulayabiliriz.

DropdownList ile ilgili bir sonraki yazımızda View kısmında dinamik bir SelecListItem oluşturup ViewBag ile verileri taşıyacağız.