Osman KURT

Yazılım Uzmanı | MVC Eğitmeni

ASP.Net MVC de @Html.DropDownListFor (Doldurmak) Kullanımı

Bu yazımız da asp.net de @Html.DropDownListFor kullanımı göstereceğim. ilk olarak kısaca mvc den bahsetmek gerekirse biliyorsunuz tamamı ile modeller üzerinden işlerimiz ilerlediği için bizde model üzerinden işlemimizi kullanılır hale getireceğiz. Öncelikle elimiz de bir access db olduğunu varsaylım ve Sayfalar adında bir tablomuz olsun. Bu tablomuzun da SayfaId(sayi),SayfaAd(metin),Icerik(not),RootID(sayi) gibi alanları olsun.

İşe ilk olarak bir model oluşturarark başlayalım isterseniz ve içine alt kısımda ki gibi propertilerimizi tamınlayalım.

 

public class Pages
    {
        public int SayfaId { get; set; }
        public string SayfaAd { get; set; }
        public string Icerik { get; set; }
        public int RootID { get; set; }
    }

 

 

Şimdi modelimizi oluştuduk dropumuzu doldurmak için bir fonksiyona ihtiyacımız var onuda alt kısımda ki yaptım ben ama siz farklı şekilde de yapabilirsiniz. Yeter ki geriye list döndürsün.

 

public class Pages
    {
        public int SayfaId { get; set; }
        public string SayfaAd { get; set; }
        public string Icerik { get; set; }
        public int RootID { get; set; }


        public List PageList()
        {
            List PList = new List();
            OleDbCommand cmd = new OleDbCommand("Select * from Sayfalar", baglan.baglanti);
            if (ConnectionState.Closed == baglan.baglanti.State)
                baglan.baglanti.Open();
            OleDbDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                Pages page = new Pages();
                page.SayfaId = Convert.ToInt32(dr["SayfaId"].ToString());
                page.SayfaAd = dr["SayfaAd"].ToString();
                page.Icerik = dr["Icerik"].ToString();
                page.RootID = Convert.ToInt32(dr["Root"]);
                PList.Add(page);
            }
            dr.Close();
            baglan.baglanti.Close();
            return PList;
        }
    }

 

 

Şimdi elimiz de bir adet modelimiz var ve bu modellerin içinde ise list döndüren bir fonksiyonumuz var. Gelelim ön kısmımıza.

Öncelikle Index sayfasında işlemi yapacağız. Bu yüzden de elimiz de 1 adet view 1 adet de controller var. ilk önce controller kısmında li ActionResult Index alanımıza bir adet ViewBag tanımlıyoruz ki içinde rahatça gezebilelim. Alt kısıma uygun kodu bulabilirsiniz.

 

public ActionResult Index(Pages Page)
        {
            ViewBag.PageList = Page.PageList();
            return View();
        }

Bu kodumuzu da yazdıktan sonra geriye kalan tek sayfamız view da ki Index sayfamız. Bu sayfamıza da Öncelikle en üst kısmında modelimizi tanımlamak şartı ile alt kısımda ki kodlarımızı uyguluyoruz.

 

@model KariyerMVC.Models.Pages

 

Şimdi ki esas kodumuz;

 

@Html.DropDownListFor(model => model.RootID, new SelectList(ViewBag.PageList, "SayfaId", "SayfaAd"))

 

Üst kısımda ki kodumuz da ViewBag.PageList içinde ki SayfaId ve SayfaAd kısımlarını aldım drop için de listeledim. Seçilen değeri de herhangi bir kayıt yada update,silme gibi işlemler de kullanmak üzere RootID değerine atadım.

*Not

Kod için de bulunan bağlan classımız;

 

public class baglan
{

    public static OleDbConnection baglanti = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\yazilimuzmani.mdb;Mode=ReadWrite;Persist Security Info=False");

}

 

Umarım faydalı olmuştur.

Görüşmek üzere

Yazılım uzmanı

 

Yorumlar (4) -

  • Burak

    15.05.2014 11:57:33 | Yanıtla

    Merhaba Osman Bey ;
    öncelikle bilgilerinizi paylastığınız icin tesekkürler.
    Bende bu uygulama hata veriyo daha doğrusu

    List olusturamıyom  public List PageList() kısımda

    Using the generic type 'System.Collections.Generic.List<T>' requires 1 type arguments

    bu hatayı alıyom arastırdım bulamadım yardımcı olursanız sevinirim.

  • rıdvan

    05.11.2014 04:36:56 | Yanıtla

    public List PageList() bu kısımda hata verdi bende

      public class IlanModels
        {
            public int IlanId { get; set; }

            [DataType(DataType.ImageUrl, ErrorMessage = "Lütfen resim yolunuzu doğru şekilde giriniz.")]
            public string IlanResim { get; set; }

            public int IlanTypeId { get; set; }
            public string IlanString { get; set; }

            public List IlanTipList()
            {
                List IList = new List();
                SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["Baglantim"].ConnectionString);
                SqlCommand cmd = new SqlCommand("Select * From Tipler", con);
                if (ConnectionState.Closed == con.State)
                con.Open();
                SqlDataReader rd = cmd.ExecuteReader();
                while (rd.Read())
                {
                    IlanModels nmodel = new IlanModels();
                    nmodel.IlanTypeId = Convert.ToInt32(rd["TipId"].ToString());
                    nmodel.IlanString = rd["TipString"].ToString();
                    IList.Add(nmodel);
                }
                rd.Close();
                con.Close();
                return IList;
            }
        }
    }


    -----

    Görüldüğü üzre         public List IlanTipList() bu kısımda hata verdi.

    Error  1  Inconsistent accessibility: return type 'ingilterede.Models.List' is less accessible than method 'ingilterede.Models.IlanModels.IlanTipList()'  

    sorun nerede ?

    • osmankurt

      05.11.2014 21:46:34 | Yanıtla

      Merhaba Rıdvan,
      Tip uyuşmazlığı hatası aldığını düşünüyorum. Değişkenin ile geri dönen değer uyuşmuyor.

      • Rıdvan

        05.11.2014 23:46:53 | Yanıtla

        Kodda mı hata var acaba ? Plist nesnesinden sonra Add fonksiyonu gelmiyor ayrıca.

        Şu MVC'yi geleneksel sql metodları ile yapmaya çalışıyorum. bu droplist doldurma olayı çok karışık diğer yollarda. acaba programın örnek kod bloğunu paylaşır mısınız ?

Loading