zoukankan      html  css  js  c++  java
  • MVC3学习:利用mvc3+ajax实现级联下拉列表框

    本例使用的是EF first code操作数据库。

    一、准备数据库

    级联下拉列表框,比较经典的就是省市数据表,在Model里同时创建三个类:province.cs、city.cs和dropContext.cs

    1、province.cs

      [Table("province")]
        public class province
        {
             [Key]
            public int proID { get; set; }
            public string proName { get; set; }
            public virtual IEnumerable<city> city { get; set; }
        }

    2、city.cs

     public class city
        {
            public int cityID { set; get; }
            public string cityName { set; get; }
            public int proID { set; get; }
            public virtual province pronvince { set; get; }
        }

    3、dropContext.cs

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Data; //必须添加
    using System.Data.Entity; //必须添加
    using System.Data.Entity.ModelConfiguration.Conventions;
    
    namespace dropdown.Models
    {
        public class dropContext : DbContext
        {
            public dropContext()
                : base("name=constr")
            {
    
            }
            public DbSet<city> city { get; set; }
            public DbSet<province> province { get; set; }
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                //base.OnModelCreating(modelBuilder);
                modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    
            }
        }
    
    }

    二、控制器

    新建dropController控制器

      public class dropController : Controller
        {
            private dropContext db = new dropContext();
            public ActionResult Index()
            {
                //生成省份列表
                ViewBag.pro = new SelectList(db.province, "proID", "proName");
                //生成城市列表
                ViewBag.city = new SelectList(db.city, "cityID", "cityName");
                return View();
            }
            public ActionResult getData(int ID)
            {
                if(Request.IsAjaxRequest()) //判断是否使用ajax
                {
                    var q = from c in db.city
                            where c.proID == ID
                            select new { c.cityID, c.cityName }; //不能查询出c.proID,否则会出错
                return Json(q,JsonRequestBehavior.AllowGet); //返回json数据
                }
                return View();
            }
        }
    View Code

    三、视图

    添加视图Index.cshtml

    <script type="text/javascript">
        $(function () {
            $("#city").find("option").remove();
            $("#pro").change(function () {
                var pid = $(this).val();
                $("#city").find("option").remove();
                $.post("/drop/getData",{ID:pid},
                function(data)
                   {
                     $.each(data,function(i,item)
                     {
                       $("<option></option>").val(item["cityID"]).text(item["cityName"]).appendTo($("#city"));
                     });
                   });
            });
        });
        
    </script>
    
    <h2>下拉列表</h2>
    @Html.DropDownList("pro", "请选择")
    @Html.DropDownList("city","请选择")
    View Code

    利用JQuery ajax将参数ID传递给getData方法进行处理,getData方法处理完后返回JSON序列,将此序列绑定到城市下拉框里即可。

  • 相关阅读:
    HttpURLConnection中使用代理(Proxy)及其验证(Authentication)
    Java获取随机数的几种方法
    史上最全的java随机数/字符串生成算法(转)
    httpClient中的三种超时设置小结
    几个性能测试工具
    硬件知识
    北风风hadoop课程体系
    IT大数据服务管理高级课程(IT服务,大数据,云计算,智能城市)
    .net framework client profile
    Resharper中注释代码的快捷键
  • 原文地址:https://www.cnblogs.com/denny402/p/3162365.html
Copyright © 2011-2022 走看看