在网上找了好久,都没有找到自己想要的那种效果,最后还是自己写出来了, 虽然方法有点笨。
这是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