Mvc 中国直辖市下拉列表(三级联动)

(一)controllers

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using 下拉主外键_关系.Models;

namespace 下拉主外键_关系.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/

     [HttpGet] //刚开始加载页面的时候
        public ActionResult Index()
        {   

            //省份  根据编号0001查的就是省份
            string ParentAreaCodepro;
            ParentAreaCodepro = "0001";
            List<ChinaStates> listpro = new ChinaBF().SelectPro(ParentAreaCodepro);
            SelectList bb = new SelectList(listpro, "AreaCode", "AreaName");
            ViewBag.databb = bb;

            //市辖  这里默认显示的是北京
            string AreaCode1;
            AreaCode1 = "11";
            List<ChinaStates> listcity1 = new ChinaBF().SelectCity2(AreaCode1);
            SelectList cc1 = new SelectList(listcity1, "AreaCode", "AreaName");
            ViewBag.datacc1 = cc1;

            //市区 这里默认显示的是北京的数据
            string AreaCode;
            AreaCode = "1101";
            List<ChinaStates> listcity = new ChinaBF().SelectCity2(AreaCode);
            SelectList cc = new SelectList(listcity, "AreaCode", "AreaName");
            ViewBag.datacc = cc;
            return View();
        }

        [HttpPost]  //当页面提交后,数据便会改变,联动显示
        public ActionResult Index(string pro,string city,string city1)//三个参数很重要,名字必须和Views视图里数据的name值一样
        {

            //省份  还是加载编号0001 这样加载的全是省份
            string AreaCodepro;
            AreaCodepro = "0001";
            List<ChinaStates> listpro = new ChinaBF().SelectPro(AreaCodepro);

            SelectList bb = new SelectList(listpro, "AreaCode", "AreaName",pro); //第四个参数是选定的值,通过选定 的这个值来筛选市辖
            ViewBag.databb = bb;

            //市辖

            List<ChinaStates> listcity1 = new ChinaBF().SelectCity1(pro);//由上一步选定的值来筛选市辖
            SelectList cc1 = new SelectList(listcity1, "AreaCode", "AreaName",city);
            ViewBag.datacc1 = cc1;

            //市区
            var b = listcity1.Exists(P => P.AreaCode == city) ? city : listcity1[0].AreaCode;//两种情况,需要判断一下 看看市辖是不是当前的
            List<ChinaStates> listcity = new ChinaBF().SelectCity2(b);
            SelectList cc = new SelectList(listcity, "AreaCode", "AreaName");
            ViewBag.datacc = cc;
            return View();

        }

    }

    }
(二 model

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using 下拉主外键_关系.Controllers;

namespace 下拉主外键_关系.Models
{
    public class ChinaBF
    {
        private MYDBDataContext _context = new MYDBDataContext();
        public List<ChinaStates> Select()
        {
            return _context.ChinaStates.ToList();
        }
        //因为所有数据都在一个表里, 都是根据ParentAreaCode与AreaCode比较
        public List<ChinaStates> SelectPro(string AreaCode) //省份
        {

            var query = _context.ChinaStates.Where(P => P.ParentAreaCode == AreaCode);
            if (query.Count() > 0)
            {
                return query.ToList();
            }
            else
            {
                return null;
            }

        }

        public List<ChinaStates> SelectCity1(string AreaCode)//市辖
        {
            var query = _context.ChinaStates.Where(P => P.ParentAreaCode == AreaCode);
            if (query.Count() > 0)
            {
                return query.ToList();
            }
            else
            {
                return null;
            }
        }

        public List<ChinaStates> SelectCity2(string AreaCode)//市区
        {
            var query = _context.ChinaStates.Where(P => P.ParentAreaCode == AreaCode);
            if (query.Count() > 0)
            {
                return query.ToList();
            }
            else
            {
                return null;
            }
        }

    }
}

(三) view@using 下拉主外键_关系.Models;
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
      @{
        SelectList bb = ViewBag.databb;
        SelectList cc = ViewBag.datacc;
        SelectList cc1 = ViewBag.datacc1;
        }
     @using (Html.BeginForm("Index", "Home", FormMethod.Post))
       {
    <div>

        省份: @Html.DropDownList("pro",bb,new { onchange="document.forms[0].submit();"})
        市辖:@Html.DropDownList("city",cc1,new { onchange="document.forms[0].submit();"})
         市区:@Html.DropDownList("city1",cc)
    </div>
     }
</body>
</html>
时间: 2024-10-12 13:20:36

Mvc 中国直辖市下拉列表(三级联动)的相关文章

中国省市区地址三级联动jQuery插件 案例下载

中国省市区地址三级联动jQuery插件 案例下载 distpicker 是一款可以实现中国省市区地址三级联动jQuery插件.它使用简单,简单设置即可完成中国省市区地址联动效果. 安装 可以通过npm或bower来安装该三级联动插件. npm install distpicker bower install distpicker 使用方法 HTML结构 基本的HTML结构是使用一个<div>容器来包裹一组<select>元素. <div><!-- containe

MVC 下拉列表三级联动

当前所做的项目,关于数据库设计的时候有点小意思,表A是三个联合主键,key1,key2,key3,表B是四个联合主键 key1,key2,key3,key4,其中表B的联合外键关联表A对应的联合主键,这样一来,对表B做新增的时候 就需要几个小步骤: ①:界面初始化,返回全部不重复的 key1.key2.key3 ②:界面勾选key1,触发chang事件,采用getJson 方式将参数key1的值发送到Action中 ,同时设置下拉列表b 的内容为空,$("#b").html('');

easyUI下拉列表三级联动

首先是先想好数据库的搭建,通过地区id,地区名称,上级地区id就可以实现,所有省市区的数据 例如: DAO层 service层 Servlet 页面 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>修改员工</title> <!-- 顺序不可以乱 --> <!-- 1.jQuery的js包 --> <script

MVC 三级联动

本篇实现中国省市区三级联动,先看最终效果: 初始状态: 当选择第1个Select,第2.3个Select可供选择: 当选择第2个Select,第1个不变.第3个Select可供选择: 当选择第3个Select,第1.2个不变: 下面是代码: 控制器Controllers\HomeController.cs using System; using System.Collections.Generic; using System.Linq; using System.Web; using Syste

Webform——中国省市三级联动以及IsPostBack

首先要明白Webform的运行顺序,当开始启动时候,首先执行的是Page_Load事件, 当点击任意按钮后,每次点击都要先执行一遍Page_Load(在这里Page_Load里面的事件是给数据控件加载数据)事件,然后才执行按钮上的内容. 但是如果是一个数据控件,里面存的是一些数据,如果用foreach遍历逐项给数据控件添数据的话,每次点击按钮(即刷新页面)都会执行一遍Page_Load,也就是说每次都要重复添加原来的数据,所以这就需要一个判断条件,使它只会第一次启动的时候走Page_Load事件

ajax三级联动下拉菜单

ajax写三级联动,先写一个文件类吧,以后用的时候直接调用即可: 来找一张表: 实现: 中国地域的三级联动:省.市.区: 图: 说一下思路: (1)当用户选择省份的时候触发事件,把当前的省份的id通过ajax发出请求传递到服务端的程序中 (2)比如取中国地域,中国是0001,那么自带号为0001的便是中国地域: 北京的代号为11,那么子代号为11的便是北京时的市区, 也就是说根据主代号查询子代号: (3)服务端根据客户端的请求,查询数据库,并按照一定的格式返回给客户端 显示页面非常简单,只需要一

练习:WinForm 三级联动(中国行政区划)

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 三级联动.Model { class China { private string code; public string Code { get { return code; } set { code = value; } } private string name; public string Name

AJAX省市区三级联动下拉列表实现 JAVA开发

转载自:http://blog.sina.com.cn/s/blog_a48af8c001011lx1.html 例子--District Picker            http://fengyuanchen.github.io/distpicker/ 此小程序的功能主要是采用异步请求方式从数据库中调取省市区信息显示到下拉列表: 代码如下: 建立数据库中的代码和一些配置文件信息就省略了,主要有JavaScript中的代码为: $(document).ready(function(){   

(八)学习MVC之三级联动

1.新建项目,MVC选择基本模板 2.新建类:Model/Student.cs,数据库信息有三个实体:分别是年级.班级和学生. using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.Linq; using System.Web; namespace CascadeExample.Models { public class Grade { [