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(" ")@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)
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.
mantıgı anladım inşallah yaparım.