C# Mvc下拉列表框三级联动

首先声明,本人语言表达能力并不是很好,所以呢,以代码为主


这里是用ajax调用后台控制器

@Html.DropDownListFor(n => n.provinceName, ViewBag.Province as List, "请选择省份", new { @onchange = "XiaCity(this.value)" }) @Html.DropDownListFor(n => n.cityName, new List(), "请选择城市", new { @onchange = "XiaArea(this.value)" }) @Html.DropDownListFor(n => n.AreaName, new List(), "请选择城区")

这里使用强类型视图
//显示页面
public ActionResult Index()
           
        { 
            TheProvince();
            return View();
        }
//获取省份
public void TheProvince()
        {
            UserBLL bll = new UserBLL();
            DataTable dt = bll.GetProvince();
            var linq = from s in dt.AsEnumerable()
                       select new SelectListItem
                       {
                           Value = s.Field("provinceId"),
                           Text = s.Field("provinceName")
                       };
            ViewBag.Province = linq.ToList();
        }
//获取城市
public JsonResult TheCity(string id)
        {
            UserBLL bll = new UserBLL();
            DataTable dt = bll.GetCity(id);
            var linq = from s in dt.AsEnumerable()
                       select new SelectListItem
                       {
                           Value = s.Field("cityId"),
                           Text = s.Field("cityName")
                       };
            return Json(linq.ToList());
        }
//获取地区
public JsonResult TheArea(string id)
        {
            UserBLL bll = new UserBLL();
            DataTable dt = bll.GetArea(id);
            var linq = from s in dt.AsEnumerable()
                       select new SelectListItem
                       {
                           Value = s.Field("AreaId"),
                           Text = s.Field("areaName")
                       };
            return Json(linq.ToList());
        }
控制器中创建方法Index,TheProvince,TheCity,TheArea 获取省份不需要传参数,但是获取城市和地区需要传递参数,参数为他的父级Id,获取地区中的数据为Linq语句
///命名空间
namespace ZS.Test.Model
{
//地区
    public class Area
    {
        public string id{get;set;}
      public string AreaName{get;set;}
      public string AreaId{get;set;}
      public string father{get;set;}
    }
}
namespace ZS.Test.Model
{
//城市
    public class City
    {
        public string id{get;set;}
      public string cityName{get;set;}
      public string cityId{get;set;}
      public string father{get;set;}
    }
}
namespace ZS.Test.Model
{
//省份
    public class Province
    {
        public int id{get;set;}
      public string provinceName{get;set;}
      public string provinceId{get;set;}
    }
}

Model中的数据除省份没有父类Id,其他表中的数据 例如Area中 father连接的是City中的Id
Mvc中页面显示的数据是强类型视图的,而上述Model是类库中的用于连接数据库,前台显示需要您自己手动敲一敲,最好把所有的字段都放在一个类中


为什么要发一个三级联动的代码,因为个人感觉自己敲过的代码过一段时间就会忘掉,所以发到csdn上也方便自己日后能回来看一下

你可能感兴趣的:(代码)