C sharp ASP.Net MVC ile cascading dropdownlist örneği nasıl yapılır

Yazar: | 31 Aralık 2015

C# ASP.Net MVC ile  ile veritabanında bulunan illeri seçince yine veritabanında bulunan o il ile bağlantılı ilçeleri getirmesi için javascript kullanarak jsonresult ile nasıl kodlandığını görelim:

html alanına yazılacak kod:

@model cascading.ViewModel.SehirViewModel
@{
ViewBag.Title = "Index";
}

<h2>Index</h2>
@using(Html.BeginForm("Create","Home", FormMethod.Post))
{
<label>İl adı</label> @Html.DropDownListFor(m=>m.SehirID, Model.SehirList)
<br />
<br />
<br />
<label>İlçe Adı</label> @Html.DropDownListFor(m=>m.IlceID, Model.IlceList)
}

@section scripts
{
<script type="text/javascript">
$(document).ready(function () {
$("#SehirID").change(function(){
var id = $(this).val();
var IlceList = $("#IlceID");
IlceList.empty();
$.ajax({
url: '/Home/IlceList',
type: 'POST',
dataType: 'json',
data: { 'id': id },
success: function (data) {
$.each(data, function (index, option) {
IlceList.append('<option value='+option.Value+'> '+option.Text+'</option>');
});
}
});
});
});
</script>
}

 

model alanına yazılacak kod:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace CascadingOrnek.ViewModel
{
public class SehirViewModel
{

public SehirViewModel()
{
this.IlceList = new List<SelectListItem>();
IlceList.Add(new SelectListItem { Text = "Seçiniz", Value = "" });
}
public int SehirID { get; set; }
public int IlceID { get; set; }

public List<SelectListItem> SehirList { get; set; }
public List<SelectListItem> IlceList { get; set; }

}
}

 

Bir controller oluşturup controller alanına eklenecek kodu yazalım:

using CascadingOrnek.Models;
using CascadingOrnek.ViewModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace CascadingOrnek.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
SehirViewModel model = new SehirViewModel();
CascadingDBEntities db = new CascadingDBEntities();

List<Sehir> SehirList = db.Sehir.OrderBy(f => f.ŞehirAdi).ToList();

model.SehirList = (from s in SehirList
select new SelectListItem
{
Text = s.ŞehirAdi,
Value = s.SehirID.ToString()
}).ToList();
model.SehirList.Insert(0, new SelectListItem { Value = "", Text="Seçiniz", Selected=true });

return View(model);
}

public JsonResult IlceList(int id)
{
CascadingDBEntities db = new CascadingDBEntities();
List<Ilce> ilcelist = db.Ilce.Where(f => f.SehirID == id).OrderBy(f => f.İlceAdi).ToList();

List<SelectListItem> itemlist = (from i in ilcelist
select new SelectListItem
{
Value = i.IlceID.ToString(),
Text = i.İlceAdi
}).Tolist();

return Json(itemlist, JsonRequestBehavior.AllowGet);
}
}
}

3 thoughts on “C sharp ASP.Net MVC ile cascading dropdownlist örneği nasıl yapılır

  1. Kaan Acar

    İlçe Listesi aslında doğru geliyor profiler dan yada breakpoint ile takip edildiğinde bu görülebiliyor fakat ilçe dropdownlist in elemanları undifenid olarak geliyor. Çözümü var mıdır ?

    Reply
      1. Kaan Acar,

        Maalesef Ülke-Şehir yapısı kullanıyorum. Ben videodakinden farklı olarak entiyframework code first yapısı ile verileri çekiyorum.

        Ülkeler aynen viewmodel model üzerinden List CountryList gibi bir yapı ile düzgün bie şekilde geliyor. Burada bir problem yok.

        Fakat Şehir listesi aynen video da olduğu gibi JSonResult a örneğin CityId ve CityName property lerine düzgün bir şekilde dolar iken (bunu kod üzerinden F10 ile debug yaparak görebiliyorum.)
        Dropdownlist te undefined olarak listelenmekteler.

        Reply

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir