Osman KURT

Kendime Not

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ı

 

MVC 3 ile Layout (Masterpage) Kullanımı

Asp.net de bir web projesi geliştirdiyseniz kesinlikle masterpage ve contentplaceholder yapısını kullanmışınızdır.
Nasıl olurdu?
Bir proje oluşturursunuz daha sonra projenin içine bir adet bütün sayfalarda kullanmak üzere masterpage oluşturursunuz genel kodlarınızı bunun içine yazarsınız ve kullanıma açmak istediğiniz alanlara contentplaceholder koyarsınız ki diğer iç sayfalar da bu alanları kullanabilesiniz.

Aynı durum MVC için de geçerli.

MVC orje oluştururken de masterpage yerine Layout dediğimiz MVC’nin masterpage’lerini ekliyoruz. Araların a fark yok denecek kadar az. Ama bir sıkıntı var. Normal projelerimiz de kulandığımız sağ kısımda ki toolbox da contentplaceholder yok! ne yapmamaız gerekecek.
İşte burada devreye @RenderBody() dediğimiz sistem giriyor ve bizi aydınlatıyor. Tek yapmanız gereken yan kısımda ki kodu layout sayfamızın kullanmak istediğimiz kısmına yazmak.
Ayrıca her sayfa da tek tek kullanıma açmaya da gerek yok çünkü otomatik olarak görecektir ve alanı kullanmaya başlayacaktır.


Aynı master da ilinci @RenderBody() kullanmak diye bir sorunuz varsa da, üzgünüz kullanamıyorsunuz. Onun yerine @RenderSection(“Etiket”) kodumuz var. Bu kodumuzun kullanımını da bir sonra ki yazımızda göstereceğim.


Görüşmek üzere
Osman KURT