Bu makalemizde EditorTemplates yapısını kullanarak checkboxlist hazırlayacağız sizler bu yapıyı kullanarak radiobuttonlist gibi çeşitli nesnelerde oluşturabilirsiniz.
ASP.NET MVC ile Checkboxlist hazırlama
MySQL Veritabanı için sehirler tablosu sql kodumuz
1 2 3 4 5 6 | CREATE TABLE `sehirler` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `Ad` varchar(45) DEFAULT NULL, `Secili` bit(1) DEFAULT NULL, PRIMARY KEY (`Id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; |
Sehirler tablosu için örnek bazı kayıt insert cümleleri
1 2 3 4 5 6 | INSERT INTO `sehirler` (`Id`,`Ad`,`Secili`) VALUES (1,'Kocaeli','1'); INSERT INTO `sehirler` (`Id`,`Ad`,`Secili`) VALUES (2,'Ankara','0'); INSERT INTO `sehirler` (`Id`,`Ad`,`Secili`) VALUES (3,'Bursa','0'); INSERT INTO `sehirler` (`Id`,`Ad`,`Secili`) VALUES (4,'Antalya','1'); INSERT INTO `sehirler` (`Id`,`Ad`,`Secili`) VALUES (5,'Van','0'); INSERT INTO `sehirler` (`Id`,`Ad`,`Secili`) VALUES (6,'Kars','1'); |
Bu örneğimizde EntityFramework yapısını kullanacağız MySql’de veritabanı ve üstteki sehirler adındaki tablomuzu oluşturduktan sonra EntityFramework yapımızı DB’den oluşturarak işlemimize başlıyoruz.
SehirController.cs dosyamızın içeriği şu şekilde olacak
1 2 3 4 5 6 7 8 9 10 11 12 | [HttpGet] public ActionResult Index() { var sehirler = db.sehirlers.ToList(); return View(sehirler); } [HttpPost] public ActionResult Index(IEnumerable<sehirler> sehir) { return View(sehir); } |
Sehir View’ine ait Index.cshtml dosyasının içeriği
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | @model IEnumerable<FirstMVCBlog.Models.sehirler> @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Index</h2> @using (Html.BeginForm()) { @Html.EditorForModel() <br/> <input type="submit"/> } |
Üstteki kodda bir noktaya dikkatinizi çekmek istiyoruzm @HtmlHelper sınıfının bir üyesi olan EditorForModel metodu ile EditorTemplate’leri kullanabiliyoruz böylelikle template’leri çok basit bir şekilde istediğiniz her yerde küçük küçük parçalarla kullanabilir ve 10’larca sayfada kullandığınız template’leri tek yerden değiştirme kolaylığına sahip olabilirsiniz. metodu kullanırken dikkat etmeniz gereken nokta eğer EditorTemplates klasörü altındaki .cshtml uzantılı template eğer model’inizle aynı ada sahipse o zaman EditorForModel() metoduna parametre geçemenize gerek yoktur ben bu örneğimde EditorTemplates klasörü altında modelimle aynı isme sahip olan Sehirler.cshtml dosyası oluşturdum böylelikle EditorForModel() metoduna template ismini parametre geçmem gerekmedi ama modelinizle farklı isimdeyse parametrede belirltmeniz gerekecektir aksi durumda modelinizle aynı isimde bir template arayacak veya kullanacaktır.
Sehirler.cshtml adındaki template dosyasının içeriği
1 2 3 4 5 6 7 | @model FirstMVCBlog.Models.sehirler @Html.HiddenFor(u => u.Id) @Html.HiddenFor(u => u.Ad) @Html.CheckBoxFor(u => u.Secili) @Html.DisplayFor(u => u.Ad) |