MVC TIP6:级联菜单

简介:

级联菜单最有名的是省市级联,如果你还没有这样的数据库,请从这里下载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


本文转自最课程陆敏技博客园博客,原文链接:http://www.cnblogs.com/luminji/archive/2011/08/01/2123960.html,如需转载请自行联系原作者

相关文章
|
SQL JSON 前端开发
MVC TIP6:级联菜单
级联菜单最有名的是省市级联,如果你还没有这样的数据库,请从这里下载Province.rar。 1:MODEL 准备3个Model,如下: public class Province { public int id { get; set; } ...
971 0
|
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开发实战之商城系统(开篇)
194 0
|
开发框架 缓存 JSON
ASP.NET Core MVC 从入门到精通之Filter
ASP.NET Core MVC 从入门到精通之Filter
162 0
|
10月前
|
开发框架 自然语言处理 前端开发
基于ASP.NET MVC开发的、开源的个人博客系统
基于ASP.NET MVC开发的、开源的个人博客系统
71 0