MVC TIP6:级联菜单

简介: 级联菜单最有名的是省市级联,如果你还没有这样的数据库,请从这里下载Province.rar。 1:MODEL 准备3个Model,如下: public class Province { public int id { get; set; } ...

级联菜单最有名的是省市级联,如果你还没有这样的数据库,请从这里下载Province.rar

1:MODEL

准备3个Model,如下:

    public class Province
    {
        public int id { get; set; }
        public string provinceID { get; set; }
        public string province { get; set; }
    }
    public class Province
    {
        public int id { get; set; }
        public string provinceID { get; set; }
        public string province { get; set; }
    }
    public class Area
    {
        public int id { get; set; }
        public string areaID { get; set; }
        public string area { get; set; }
        public string father { get; set; }
    }

2:Controller部分的数据获取

如下:

    public class CityController : Controller
    {
        string conn = "Data Source=.;Initial Catalog=ForestFire;User Id=sa;Password=sa;";

        public ActionResult Index()
        {
            return View("");
        }

        public ActionResult GetProvince()
        {
            if (!Request.IsAjaxRequest())
            {
                return Content("请不要非法方法,这是不道德的行为!");
            }
            string sql = "select * from dbo.povince";
            using (DataSet ds = SqlHelper.ExecuteDataset(conn, CommandType.Text, sql))
            {
                var provinces = DataTableHelper.DataTable2Objects<Province>(ds.Tables[0]);
                return Json(provinces, JsonRequestBehavior.AllowGet);
                //return Json(provinces);
            }
        }

        public ActionResult GetCity(string id)
        {
            if (!Request.IsAjaxRequest())
            {
                return Content("请不要非法方法,这是不道德的行为!");
            }
            string sql = "select * from dbo.city where father=@fatherID";
            SqlParameter p1 = new SqlParameter("@fatherID", id);
            using (DataSet ds = SqlHelper.ExecuteDataset(conn, CommandType.Text, sql, p1))
            {
                var citys = DataTableHelper.DataTable2Objects<City>(ds.Tables[0]);
                return Json(citys, JsonRequestBehavior.AllowGet);
                //return Json(provinces);
            }
        }

        public ActionResult GetArea(string id)
        {
            if (!Request.IsAjaxRequest())
            {
                return Content("请不要非法方法,这是不道德的行为!");
            }
            string sql = "select * from dbo.area where father=@areaID";
            SqlParameter p1 = new SqlParameter("@areaID", id);
            using (DataSet ds = SqlHelper.ExecuteDataset(conn, CommandType.Text, sql, p1))
            {
                var areas = DataTableHelper.DataTable2Objects<Area>(ds.Tables[0]);
                return Json(areas, JsonRequestBehavior.AllowGet);
                //return Json(provinces);
            }
        }

    }

3:前台

如下:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
    Index.aspx
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
    <script type="text/javascript">
        $(document).ready(function () {
            $("#getP").click(function () {
                GetByJquery();
            });
            $("#ddlProvince").change(function () { GetCity() });
            $("#ddlCity").change(function () { GetArea() });
        });

        function GetByJquery() {
            $("#ddlProvince").empty(); 
            //                        $.getJSON("GetProvince", function (result) {
            //                            alert("abc");
            //                            $.each(result, function (i, item) {
            //                                $("<option></option>")
            //                                .val(item["id"])
            //                                .text(item["province"])
            //                                .appendTo($("#ddlProvince"));
            //                            });
            //                            alert("xxx");
            //                            //GetCity();
            //                        });
            htmlobj = $.ajax({
                url: "City/GetProvince",
                async: false,
                complete: function (XmlHttpRequest, textStatus) {
                },
                success: function (result) {
                    $.each(result, function (i, item) {
                        $("<option></option>")
                                            .val(item["provinceID"])
                                            .text(item["province"])
                                            .appendTo($("#ddlProvince"));
                    });
                    GetCity();
                },
                error: function (XmlHttpRequest, textStatus, errorThrown) {
                    var $errorPage = XmlHttpRequest.responseText;
                    alert($("#ErrorMsg", $errorPage).text());
                    //alert($("#ErrorMsg", XmlHttpRequest.responseText).text());
                },
                dataType: "json"
            });
        }

        function GetCity() {
            $("#ddlCity").empty(); 
            alert($("#ddlProvince").val());
            htmlobj = $.ajax({
                url: "City/GetCity/" + $("#ddlProvince").val(),
                async: false,
                complete: function (XmlHttpRequest, textStatus) {
                },
                success: function (result) {
                    $.each(result, function (i, item) {
                        $("<option></option>")
                                            .val(item["cityID"])
                                            .text(item["city"])
                                            .appendTo($("#ddlCity"));
                    });
                    GetArea();
                },
                error: function (XmlHttpRequest, textStatus, errorThrown) {
                    var $errorPage = XmlHttpRequest.responseText;
                    alert($("#ErrorMsg", $errorPage).text());
                    //alert($("#ErrorMsg", XmlHttpRequest.responseText).text());
                },
                dataType: "json"
            });
        }

        function GetArea() {
            $("#ddlArea").empty(); 
            alert($("#ddlCity").val());
            htmlobj = $.ajax({
                url: "City/GetArea/" + $("#ddlCity").val(),
                async: false,
                complete: function (XmlHttpRequest, textStatus) {
                },
                success: function (result) {
                    $.each(result, function (i, item) {
                        $("<option></option>")
                                            .val(item["areaID"])
                                            .text(item["area"])
                                            .appendTo($("#ddlArea"));
                    });
                },
                error: function (XmlHttpRequest, textStatus, errorThrown) {
                    var $errorPage = XmlHttpRequest.responseText;
                    alert($("#ErrorMsg", $errorPage).text());
                    //alert($("#ErrorMsg", XmlHttpRequest.responseText).text());
                },
                dataType: "json"
            });
        }

        

    </script>
    <input id="getP" name="getP" type="button" value="获取列表" />
    <h2>
        xxx</h2>
    <table>
        <tr>
            <td>
                <select id="ddlProvince"  />
            </td>
            <td>
                <select id="ddlCity" />
            </td>
            <td>
                <select id="ddlArea" />
            </td>
        </tr>
    </table>
</asp:Content>

最后的效果:

image

代码下载:MvcApplication520110801.rar

Creative Commons License本文基于 Creative Commons Attribution 2.5 China Mainland License发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名 http://www.cnblogs.com/luminji(包含链接)。如您有任何疑问或者授权方面的协商,请给我留言。
目录
相关文章
|
1月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
31 0
|
4月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
148 0
|
4月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
64 0
|
存储 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(五)
经过一段时间的准备,新的一期【ASP.NET Core MVC开发实战之商城系统】已经开始,在之前的文章中,讲解了商城系统的整体功能设计,页面布局设计,环境搭建,系统配置,及首页【商品类型,banner条,友情链接,降价促销,新品爆款】,商品列表页面,商品详情等功能的开发,今天继续讲解购物车功能开发,仅供学习分享使用,如有不足之处,还请指正。
152 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
[回馈]ASP.NET Core MVC开发实战之商城系统(三)
90 0
|
开发框架 前端开发 .NET
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
[回馈]ASP.NET Core MVC开发实战之商城系统(一)
155 0
|
SQL 开发框架 前端开发
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
[回馈]ASP.NET Core MVC开发实战之商城系统(开篇)
193 0
|
开发框架 缓存 JSON
ASP.NET Core MVC 从入门到精通之Filter
ASP.NET Core MVC 从入门到精通之Filter
162 0
|
10月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
71 0