• 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序列,将此序列绑定到城市下拉框里即可。

  • 相关阅读:
    UITextView自适应高度解决方法
    UITextView自适应高度出现的问题
    UITextView出现的一些问题
    服务器终于好了!
    Update语句
    VS.NET经验与技巧
    唯一约束
    由C#风潮想起的-给初学编程者的忠告
    location.search在客户端获取Url参数的方法
    Web Services 入门概念
  • 原文地址:https://www.cnblogs.com/denny402/p/3162365.html
Copyright © 2020-2023  润新知