MVC'de dinamik kontroller oluşturma ve değerlerini alma

MVC'de nasıl dinamik kontroller oluşturulur ve bu kontrollerin değerlerini nasıl alırız? Blogumda kategoriler için dinamik kontrol oluşturma için baya bi çabaladıktan sonra (daha doğrusu oluşturduğum konrtrollerin değerlerini almada sıkıntı yaşadım) galiba bir çözüm yolu buldum :)

İlk önce kontrolleri oluşturmaya bakalım.

List<MvcApplication1.Models.Category> cats = ViewBag.categories;

Burada controllerdan gelen kategorileri "cats" isimli değişkene aktarıyorum.

@foreach (var item in cats)
{
    @Html.CheckBox("category[" + item.ID + "]")@Html.Raw("&nbsp;")@item.Name@Html.Raw("<br>")
}

Evet kategoriler içinde dönüp category[1] gibi isimlerde checkbox'lar oluşturuyoruz. Burada [1] kategori ID'sini taşıyor. Kategori adedince checkbox oluşturduktan sonra sıra geldi bunların değerlerini almaya.

Oluşturduğumuz kontrollerin değerlerini alalım.

public ActionResult Viewismi(FormCollection collection)
{
    var categories = _entity.Categories.ToList();

    foreach (var item in categories)
    {
        if (collection["category[" + item.ID + "]"].Contains("true"))
        {
            //yapılacak işlemler
        }
    }

    return RedirectToAction("Index");
}

FormCollection sayfadaki formda bulunan kontrollere erişimimizi sağlıyor. Burada

collection["category[" + item.ID + "]"].Contains("true")

diyerek oluşturduğum dinamik kontolün checked olup olmadığını yani işaretlenip işaretlenmediğini kontrol ediyorum. Eğer işaretlenmisse true değerini içeriyordur. Kontrolümüzün değerini aldıktan sonra yapılacak işlemler artık size kalıyor. Kolay gelsin.

Mehmet YAYLACI
YORUM FORMU