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.

YORUMLAR (3)

  1. Kaan
    Kaan
    Merhabalar

    sizden ricam ben dinamik olarak yeni sayfa admin tarafında nasıl eklerim.

    bunun için home controller da dinamik olarak yeni action oluşturması lazım değilmi hocam

    Örnek benim hizmetler sayfamda ayrı ayrı 6 sayfa var. admin tarafında bunu yeni bir hizmet eklediğinde yeni bir bu sayfa nasıl oluşur.

    Ben bunu google da nasıl aratayım hocam aslında bunu söyleseniz bana yeterli.
    • Mehmet YAYLACI
      Mehmet YAYLACI
      Merhaba. Bunun için veritabanında örnek olarak sayfalar adında bir tablo oluşturun. id, baslik, icerik şeklinde alanları olsun. Her yeni sayfa eklediğinizde veritabanına bu alanların değerlerini girin. Sayfayı çağırırken de id değerine göre çağırın.
      • Kaan
        Kaan
        Hocam cevabınız için çok teşekkür ederim.

        mantıgı anladım inşallah yaparım.

YORUM FORMU

Cevabı iptal etmek için tıklayınız.