MVC 对中国省市区的联动查询代码。

Model里的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Mvcshengshiqu.Models
{
    public class ChinaBF
    {
        private masterDataContext _Context = new masterDataContext();
        public List<ChinaStates> Select()
        {
            return _Context.ChinaStates.ToList();
        }
       //因为所有的数据都在一个表里,所以通过编号查询身份,通过省份查询城市,或者通过城市查询地区
        public List<ChinaStates> Selectcity(string Areacode)
        {
            var query = _Context.ChinaStates.Where(p=>p.ParentAreaCode==Areacode);
            if (query.Count()>0)
            {
                return query.ToList();
            }
            return null;
        }
    }
}

控制器里的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Mvcshengshiqu.Models;

namespace Mvcshengshiqu.Controllers
{
    public class HomeController : Controller
    {
        //
        // GET: /Home/
          [HttpGet]
        public ActionResult Index()
        {

            string ParentAreaCode = "0001";
            //通过编号001查询出的就是所有的省份
            List<ChinaStates> list = new ChinaBF().Selectcity(ParentAreaCode);
            ViewBag.Data1 = new SelectList(list,"AreaCode","AreaName");

            //默认显示北京
            string Areacode = "11";
            List<ChinaStates> list1 = new ChinaBF().Selectcity(Areacode);
            ViewBag.Data2 = new SelectList(list1,"AreaCode","AreaName");

            //默认显示北京的辖区

            string Areacode1 = "1101";
            List<ChinaStates> list2 = new ChinaBF().Selectcity(Areacode1);
            ViewBag.Data3 = new SelectList(list2,"AreaCode","AreaName");

            return View();
        }

         [HttpPost]
        //当页面提交时,就会改变数据,联动显示
        public ActionResult Index(string sheng,string shi,string qu)
        {
            string ParentAreaCode = "0001";
            //通过编号0001把所有的省份查询出来
            List<ChinaStates> list = new ChinaBF().Selectcity(ParentAreaCode);
            //第四个值是选定的省,通过选定的省来改变市
            ViewBag.Data1 = new SelectList(list, "AreaCode", "AreaName",sheng);

            //第四个值是选定的市,通过选定的市来改变区
            List<ChinaStates> list1 = new ChinaBF().Selectcity(sheng);
            ViewBag.Data2 = new SelectList(list1, "AreaCode", "AreaName",shi);

            //判断一下市是不是当前的市。如果改一下省,市会改变,根据市改变区
            var b=list1.Exists(p=>p.AreaCode==shi)?shi:list1[0].AreaCode;

            //通过选定的市改变区
            List<ChinaStates> listcity = new ChinaBF().Selectcity(b);
            ViewBag.Data3 = new SelectList(listcity, "AreaCode", "AreaName");

            return View();
        }
    }
}

视图里的代码

@using Mvcshengshiqu.Controllers;
@using  Mvcshengshiqu.Models;
@model List<ChinaStates>
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    @{
        SelectList aa = ViewBag.Data1;
        SelectList bb = ViewBag.Data2;
        SelectList cc = ViewBag.Data3;
    }  

          @using(Html.BeginForm("Index","Home",FormMethod.Post))
          {
                <div>
              省:@Html.DropDownList("sheng", aa, new {onchange="document.forms[0].submit();" })
              市:@Html.DropDownList("shi", bb, new { onchange="document.forms[0].submit();"})
              区:@Html.DropDownList("qu",cc)
               </div>
          }  

</body>
</html>
时间: 2024-10-11 21:12:47

MVC 对中国省市区的联动查询代码。的相关文章

MVC和WebForm 中国省市区三级联动

MVC和WebForm是微软B/S端的两条腿,两种不同的设计理念,相对来说MVC更优于WebForm对于大数据的交互,因为WebForm是同一时间传输所有数据,而MVC它只是传输所用到的数据,更精确,传输量少等待数据传输的响应时间就短.但是WebForm也有他的优点,比如说设计起来更像Winform容易理解. SQL表如下: 根据ParentAreaCode=0001可以查出省级地市, 对应的省级地市有AreaCode 根据不同的AreaCode输入在ParentAreaCode中可以查出省级地

PHP + jQuery + Json 实现中国省市区三级联动

定义省市区结构的JSON文件代码: city.data.js: var cityData = [{ value: '110000', text: '北京市', children: [{ value: "110100", text: "北京市", children: [{ value: "110101", text: "东城区" }, { value: "110102", text: "西城区&qu

webform 联动查询代码

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Drawing; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object send

Yii2 中国省市区三级联动

1.获取源码:https://github.com/chenkby/yii2-region 2.安装 添加到你的composer.json文件 "chenkby/yii2-region": "dev-master" 切换到项目目录 composer update; 3.配置 1) 在地区的Model中添加以下方法 public static function getRegion($parentId=0) { $result = static::find()->

调接口省市区三级联动相关代码

//加载省份 $.ajax({ type: 'GET', url: "/cifcogroup/application/web/index.php?r=supply-chain-finance/choose-area&userId="+913555801+"&level=1&pid=0" , success: function (data) { console.log(data); if (data.status == true) { var

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

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

Ajax省市区无刷新单表联动查询

在很多时候都需要用到无刷新级联查询,本文将以省市区的级联查询作为例子.注:此为单表三级联动 环境:Vistual Studio 2015 .MSSQL 1.首先下载AjaxControlToolkit控件,附件下载地址附文章末尾. 2.创建Asp.net网站,将AjaxControlToolkit.dll和AjaxControlToolkit.pdb拷至项目的Bin文件夹下,并在项目中引用. 3.在Web.config配置文件中<system.web> 中添加如下节点 1 <pages

ajax省市区三级联动

jdbc+servlet+ajax开发省市区三级联动 技术点:jdbc操作数据库,ajax提交,字符拦截器,三级联动 特点:局部刷新达到省市区三级联动,举一反三可以做商品分类等 宗旨:从实战中学习 博客讲解是按照两级联动,但下载的资源是三级联动含sql文件. 效果图: 首页核心代码: [html] view plain copy <% List<HashMap<String,Object>> maps = ConnectionUtil.findProvinces(); pag

javaWeb数据库动态加载全国省市区三级联动

首先声明一下,全国省市区三级联动有很多的插件.没有必要这么麻烦的把省市区存到数据库,然后再获取.这样缺点很明显: 缺点:使用数据库,每次动态ajax获取数据都要操作一次数据库,增加了数据库的负担.不推荐这样做,直接使用插件比较好. 一些Jquery插件比较省时省力,不用来回操作数据库,就能达到你想要的效果,页面修饰就要自己设计咯.而且使用数据库你还要事先把省市区数据存到数据库,耗费精力,及时有一些现成的sql文件可以导入.但是感觉好麻烦有没有,博主算是试了一次. 好了说了很多废话,开始上代码吧: