ASP NET MVC Dropdownlist Doldurmak için Extesion Helper

ASP.NET Dropdownlist Extesion Helper Method

ASP.NET Dropdownlist (verileri doldurma işlemi için) Extesion Helper Method yapımını anlatmaya çalışacağım.

DropDownListimizi doldurmak için extension metot yazacağız.

Bunun için yeni bir class oluşturuyoruz.

Helpers > DropDownListHelper.cs

Helper'ımızın kodlarını yazalım..

    public static class DropDownListHelper
    {
        public static IEnumerable<SelectListItem> ToDropDownList(this IEnumerable<T,object> source, Func<T,object> value, Func<T,object> text, string defaultText = null, object selectedValue = null)
        {
            var sourceList = new List<SelectListItem>();
            if (defaultText != null)
                sourceList.Insert(0, new SelectListItem { Value = null, Text = defaultText });
            foreach (var data in source)
            {
                sourceList.Add(new SelectListItem
                {
                    Value = value(data).ToString(),
                    Text = text(data).ToString(),
                    Selected = value(data).ToString() == (selectedValue ?? "").ToString()
                });
            }
            return sourceList;
        }
    }

Helper'ımızın kodlarını yazdığımıza göre nasıl kullanıcağımıza geçelim.

Id, FirstName,LastName propertylerine sahip Person bir classımız var bu classımızı viewmizde dropdownlist olarak göstermek istiyoruz.

public ActionResult Index()
{
    var person = new Person();
    ViewBag.DropDownList = person.PersonList.ToDropDownList(x => x.Id, x => x.FirstName + " " + x.LastName, "-- Select an option --");
    return View();
}

Extension metodumuzda this IEnumerable dediğimiz için IEnumerable olan tiplerde bu metodumuz gözükecektir.

(Index.cshtml) Viewdeki kodlarımızı yazalım.

Yöntem 2

Hiç böyle aksiyonlara girmeden hazır olan yapıyı da kullanabiliriz SelectList classı yine bize aynı sonucu verecektir.

public ActionResult Index()
{
    var person = new Person();
    ViewBag.DropDownList = new SelectList(person.PersonList, "Id", "FirstName");
    return View();
}

İnşallah birilerinin faydalanması dileğiyle...