近期突然要做这个玩意,说实话其实做二级联动都已经有很多很多的第三方插件能够实现的,我就带着好奇想要做一个不是第三方插件的,做完了,现在贴下代码吧!
html :
js:
<script type="text/javascript">
$(document).ready(init);
function init() {
$("select[name='provinceName']").change(function () {
var selectedProvince = $(this).val();
ShowCityWithSelectedProvince(selectedProvince);
});
}
function ShowCityWithSelectedProvince(province) {
$.ajax({
url: "@Url.Action("ShowCity", "AdUserInfo")",
data: { provinceId: province },
success: function (data) {
$("#city").html(data);
}
});
}
</script>
页面里面:
<div class="form-group">
<div class="label">
<label>邮寄地址:</label>
</div>
<div class="field">
<div id="province">
@Html.DropDownList("provinceName", Model.province_dropdownlist, new { @name = "provinceName", @class = "input w20" })
</div>
<div id="city">
@Html.Partial("PartialCity")
</div>
<div id="area">
@Html.TextBoxFor(m => m.dataModel.MailAddress, new { @class = "input w50", @placeholder = "请输入邮寄地址" })
</div>
<div class="tips"></div>
</div>
</div>
Partial 页面:
@{
ViewBag.Title = "PartialCity";
}
@Html.DropDownList("cityName",(List<SelectListItem>)ViewBag.City, new { @name = "cityName",@class ="input w20", @style = ((List<SelectListItem>)ViewBag.City).Any() ? "" : "display:none" })
Controllers:
AdUserInfo/ShowCity:
/// <summary>
/// 区域二级联动
/// </summary>
/// <param name="provinceId"></param>
/// <returns></returns>
public ActionResult ShowCity(string provinceId)
{
List<Zshd_SSP_Area> areaAll = traffBll.GetAdArea().ToList();
List<Zshd_SSP_Area> cityList = areaAll.Where(city => city.ParentId == Convert.ToInt32(provinceId)).ToList();
List<SelectListItem> citys = new List<SelectListItem>();
citys.AddRange(cityList.Select(area => new SelectListItem() { Text = area.Name, Value = area.Id.ToString() }).ToList());
ViewBag.City = citys;
return PartialView("PartialCity");
}
还有初始化的是要赋值,其实数据源,也是自己可以去定义的