在網上找了好久,都沒有找到自己想要的那種效果,最后還是自己寫出來了, 雖然方法有點笨。
這是Controller里
1 public ActionResult Edit(string id) 2 { 3 //查詢收貨地址信息 4 var data = AddressDirectoryLogic.GetById(id); 5 6 //先把省份查出來裝到ViewBag 里 7 var provinces = RegionLogic.GetChinaProvinces(); 8 List<SelectListItem> pItems = new List<SelectListItem>(); 9 foreach (var p in provinces)//根據列表獲取省名稱和ID 10 { 11 pItems.Add(new SelectListItem { Text = p.Name, Value = p.Id }); 12 } 13 ViewBag.Province = pItems; 14 15 //城市 16 var city = RegionLogic.GetCities(data.Province); 17 List<SelectListItem> item = new List<SelectListItem>();//獲取城市列表 18 foreach (var c in city)//根據列表獲取城市名稱和ID 19 { 20 item.Add(new SelectListItem { Text = c.Name, Value = c.Id }); 21 } 22 ViewBag.City = item; 23 //把收貨地址信息里的省份和城市值保存,好做顯示 24 ViewBag.ProvinceId = data.Province; 25 ViewBag.CityId = data.City; 26 27 return View(data); 28 }
js
1 $(document).ready(function () { 2 //GetProvince();//加載省份 3 $('#T_Province').val('@ViewBag.ProvinceId'); 4 $('#T_City').val('@ViewBag.CityId'); 5 $("#T_Province").change(function () { GetCity() });//加載城市 6 }); 7 function GetProvince() { 8 $("#T_Province").empty();//清空省份SELECT控件 9 $.getJSON("/AddressDirectory/GetProvincelist", function (data) { 10 $.each(data, function (i, item) { 11 $("<option></option>").val(item["Id"]).text(item["Name"]).appendTo($("#T_Province")); 12 }); 13 GetCity(); 14 }); 15 } 16 function GetCity() { 17 $("#T_City").empty();//清空城市SELECT控件 18 $.getJSON("/AddressDirectory/GetCitylist", { pid: $("#T_Province").val() }, 19 function (data) { 20 $.each(data, function (i, item) { 21 $("<option></option>").val(item["Value"]).text(item["Text"]).appendTo($("#T_City")); 22 }); 23 }); 24 }
html
@Html.DropDownListFor(model=>model.Province, (List<SelectListItem>)ViewBag.Province,new {@class= "combobox", id = "T_Province" }) @Html.DropDownListFor(model => model.City,(List<SelectListItem>)ViewBag.City,new {@class= "combobox" , id = "T_City" })
上面的部分js 是參照別人的。下面是部分js 的源碼;
源碼:http://blog.csdn.net/qq_17202783/article/details/43371421