MVC省市区三级下拉菜单联动

控制器端代码(都在同一个表中):

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

namespace 下拉列表联动显示_中国省市_.Controllers
{
    public class HomeController : Controller
    {

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

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

            //市辖  这里默认显示的是北京
            string AreaCode1;
            AreaCode1 = "11";//数据库中的 ParentAreaCode = ‘11‘
            List<ChinaStates> listcity1 = new ChinaStatesDA().SelectPro(AreaCode1);
            SelectList cc1 = new SelectList(listcity1, "AreaCode", "AreaName");
            ViewBag.datacc1 = cc1;

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

        [HttpPost]  //当页面提交后,数据便会改变,联动显示
        public ActionResult Index(string pro, string city, string city1)
        {

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

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

            //市辖

            List<ChinaStates> listcity1 = new ChinaStatesDA().SelectPro(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 ChinaStatesDA().SelectPro(b);
            SelectList cc = new SelectList(listcity, "AreaCode", "AreaName");
            ViewBag.datacc = cc;
            return View();

        }

    }
}

视图端代码:

@using MvcApplication10.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>

Model层方法代码:

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

namespace MvcApplication10.Models
{
    public class ChinaStatesDA
    {
        private ChinaStatesDataContext _Context = new ChinaStatesDataContext();
        public List<ChinaStates> Select()
        {
            return _Context.ChinaStates.ToList();
        }

        //因为所有数据都在一个表里, 都是根据ParentAreaCode与AreaCode比较,ParentAreaCode查出来的AreaCode就等于下一级的ParentAreaCode
        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;
            }

        }

    }
}
时间: 2024-10-06 06:38:15

MVC省市区三级下拉菜单联动的相关文章

CSS样式三级下拉菜单

1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta http-equiv="

三级下拉菜单 (通用版)

<html><head><title>阿里西西网页特效演示, 三级下拉菜单 (通用版)</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312"> </head><body> <SCRIPT LANGUAGE="JavaScript"><!--functi

CSS打造三级下拉菜单

<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><meta name="keywords" content="站长,网页特效,js特效,广告代码,zzjs,zzjs.net,sky,www.zzjs.net,站长特效 网" /><meta name="d

CSS3实现的一款三级下拉菜单

<html> <head> <title>河北礼品公司</title> <style> body { background:#eee; margin:0; padding:0; } .example { background:#fff url(/imagesforcode/201306/clouds-in-blue-sky.jpg); width:770px; height:570px; border:1px #000 solid; margin

程矢Axure夜话:中继器系列视频教程之中继器下拉菜单联动

程矢Axure夜话:中继器系列视频教程之中继器下拉菜单联动 案例描述:中继器下拉菜单联动 知识点: 中继器复合操作 效果图: 在线效果预览: AxShare在线效果预览: 原型下载地址:中继器拉菜单联动 .rp 在线视频: 实现步骤: 更新中-..

使用POI生成具有三级下拉菜单的Excel文档

曾在工作中遇到这种需求,研究很久编码出一个方法,提供于此供大家参考. 效果图如下: 开始贴代码,代码中部分测试数据不影响功能. 第一部分(核心处理): 此部分包含几个方面: 获取三级下拉框各列的数据: 创建每个下拉功能的名称管理器 在隐藏的sheet中生成下拉菜单所需要的row 代码如下: /** * 第一部分 * 将三个列表所有字段从数据库查询出,并生成名称管理器,存放至隐藏的sheet中 */ private static HSSFWorkbook writePorpData() { int

Django分析之三级下拉菜单选择省/市/县

今天遇到了一个一直想做却没有机会去做的功能,今天完成了便记录下来. 那这次是具体是个什么功能呢?其实还是很简单的效果,就是在用户注册的时候可以选择省/市/县,很简单的一个小功能. 那现在就开始了~首先我们要在数据库中先建一个表,用来保存全国的省/市/县信息,下面是表的结构: CREATE TABLE IF NOT EXISTS "china_regionalTable" ( "id" integer NOT NULL, "name" varcha

【网摘】C#.NET 在 MVC 中动态绑定下拉菜单的方法

1. 已知下拉菜单列表项: 在 Controller 控制器类中输入已下代码  1 public class DemoController : Controller 2 { 3     public ActionResult BindDropDownList() 4     { 5         List<SelectListItem> select1 = new List<SelectListItem> 6         { 7             new SelectL

日期三级下拉菜单

Html 1 <select id="selYear"></select> 2 <select id="selMonth"></select> 3 <select id="selDay"></select> 4 <script src="DateSelector.js"></script> 5 <script type=&qu