ASP .NET MVC下拉框联动实例解析
两个DropDownList的联动,选择其中一个DropDownList,然后加载数据到另外的一个DropDownList上这里,我打算实现的需求是:有两个DropDownList,一个默认加载所有的省份数据,然后,当我选择省份的时候,把对应的市的数据,绑定到另外一个DropDownList上面,即实现了联动。好了,这里不打算使用仰角指示器了,换用ADO .NET。首先新建好数据库,表:
使用主数据库如果存在(从系统数据库中选择*其中名称='MyAddressDB ')删除数据库MyAddressDBGO创建数据库MyAddressDBGO使用MyAddressDBGO如果存在(从sysobjects中选择*其中名称='省份)删除表省份去吧省份表创建表省(省标识整数标识(1,1)主键,省名称非空(50)非空)如果存在(从系统对象中选择*其中名称='城市)删除表城市去吧省份表创建表城市(城市标识(同Internationalorganizations)国际组织标识(1,1)主键,城市名称NVARCHAR(50)不为空,省标识(同Internationalorganizations)国际组织引用dbo .省(省标识)不为空)-插入测试语句:【在网上找了一个省市数据库,把里面的数据导入我当前数据库中】 - 开始插入数据库。省份从临时数据库中选择省份名称_省份插入数据库。城市(城市名,省名)选择城市名,省名从临时数据库中选择城市-结束-测试插入成功与否-从数据库中选择*。省-选择*从dbo .城市然后新建一个空白的手动音量调节项目,在模型文件夹下,添加两个实体:
使用系统;使用系统。集合。通用;使用系统Linq .使用系统网络.命名空间JsonDataInMVC .模型{公共类省份{ public int ProvinceID { get设置;}公共字符串ProvinceName { get设置;} }}使用系统;使用系统。集合。通用;使用系统Linq .使用系统网络.命名空间JsonDataInMVC .模型{公共类城市{ public int CityID { get设置;}公共字符串CityName { get设置;} public int ProvinceID { get设置;} }} 然后在根目录下,新建一个文件夹数据库操作员,在里面新建一个AddressHelper类
AddRessHelper类中的代码:
使用系统;使用系统。集合。通用;使用系统Linq .使用系统网络.使用系统。配置;使用JsonDataInMVC .模型;使用系统。数据;使用系统数据。SqlClient命名空间JsonDataInMVC .DBOperator {公共类地址帮助器{///summary///连接字符串////摘要公共字符串connectionString { get { return configuration manager .连接字符串[' DBconnectionString '].ConnectionString} } ///摘要///获取所有的省份////summary////returns/returns public listvusion getall vehicle(){ listvusion lst vehicle=new listvusion();字符串sql=@'SELECT * FROM dbo .省;//ADO .网连接方式访问数据库//1.创建连接对象[连接字符串]SqlConnection conn=new SqlConnection(ConnectionString);//2.创建命令对象SqlCommand cmd=new SqlCommand();cmd .CommandText=sqlcmd .命令类型=命令类型。文字;cmd .Connection=conn//3。打开连接conn . Open();//4.发送命令SqlDataReader reader=cmd .ExecuteReader();//5.处理数据而(读者read()){ lst save .添加(新省(){ ProvinceID=Convert .ToInt32(读取器['ProvinceID']),ProvinceName=读取器['ProvinceName'].ToString()});} //6.关闭连接conn . Close();读者close();返回lst SUPPORT} ///摘要///通过ProvinceID获取市的数据////summary////param name=' id '/param////returns/returns public list city getcity listbyProvincid(int id){ DataSet ds=new DataSet();字符串sql=@'SELECT CityID,CityName FROM dbo .“受电子邮件保护的城市”;//ADO .网非连接方式访问数据库//1.创建连接对象SqlConnection conn=new SqlConnection(ConnectionString);//2.创建数据适配器对象Sqldatadapter sda=new Sqldatadapter(SQL,conn);//这里还真必须这样写。不能像下面的两条注释语句那样写//sda .选择命令。连接=连接;//sda .选择命令。CommandText=sqlsda .选择命令。命令类型=命令类型。文字;sda .选择命令。参数。addwithvalue(@ ProvinceId,id);//参数设置别忘了//3.打开连接【注意,非链接模式下,连接的打开关闭,无所谓,不过还是打开好点。规范化】conn . Open();//4.发送命令sda .填充(ds);//5.处理数据//6关闭连接【【注意,非链接模式下,连接的打开关闭,无所谓,不过还是打开好点。规范化】conn . Close();返回数据表格城市.转换模式(ds .表[0])。to list city();} }} DataTable转列表,我在网上找了一个帮助类:
使用系统;使用系统。集合。通用;使用系统。数据;使用系统Linq .使用系统。反思;使用系统网络.命名空间JsonDataInMVC .DBOperator {公共静态类datatabletolitt其中t : new(){ public static ilist ConvertToModel(DataTable dt){//定义集合ilist t ts=new LiST();T t=新t();字符串tempName=//获取此模型的公共属性属性信息[]属性s=t . GetType().GetProperties();foreach(dt中的数据行行行){ T=新T();foreach属性中的属性信息pi){ tempName=pi .名称;//检查数据表是否包含此列if (dt .列。包含(tempName)) { //判断此属性是否有设置if(!pi .CanWrite)继续;对象值=行[TempName];如果(值!=DBNull .值)pi .设置值(t,值,空);} } ts .添加(t);}返回ts;} }} 创建省控制器:
使用JsonDataInMVC .数据库操作员使用JsonDataInMVC .模型;使用系统;使用系统。集合。通用;使用系统Linq .使用系统网络.使用系统网络。手动音量调节命名空间JsonDataInMVC .控制器{公共类省控制器:控制器{私有address helper db public VirtuaL controller(){ db=new address helper();} //GET:省公众行动结果索引(){ listsublicusion lstsublicusion=db .GetAllProvince();视图包。列表省=列表省;返回视图();} }} 对应的索引视图:
@使用JsonDataInMVC .模型@{视图包.标题="索引";listsublicu lst save=viewpag .列表省作为列表省;}h2ProvinceIndex/h2label省份:/label sele id=' my ProfeSsional ' @ foreach(在第一省中的定义变量项目){选项value='@item.ProvinceID'@item.ProvinceName/option }/选择修改一下,默认的路由,
公共静态无效注册路由(常规选择路由){路线.忽略重路由(' {resource}).axd/{ * PathInfo } ');路线. MapRoute(名称:“默认值”,URL :“{控制器}/{操作}/{ id }”,默认值:新{控制器=”省份”,action=“Index”,id=UrlParameter .可选});} 先来看下阶段性的成果:运行程序:
看,这样就加载了所有的省份数据,现在我们要进一步实现,选择一个省份的时候,加载数据到另外一个下拉框中。修改控制器,添加一个方法:
使用JsonDataInMVC .数据库操作员使用JsonDataInMVC .模型;使用系统;使用系统。集合。通用;使用系统Linq .使用系统网络.使用系统网络。手动音量调节命名空间JsonDataInMVC .控制器{公共类省控制器:控制器{私有address helper db public VirtuaL controller(){ db=new address helper();} //GET:省公众行动结果索引(){ listsublicusion lstsublicusion=db .GetAllProvince();视图包。列表省=列表省;返回视图();} public JsonResult getall city by provincid(int id){ listfcity lst city=db .getcity listbyProvincid(id);返回Json(lstCity,JsonRequestBehavior .允许get);} }}索引视图中:
@使用JsonDataInMVC .模型@{视图包.标题="索引";listsublicu lst save=viewpag .列表省作为列表省;}h2ProvinceIndex/h2label省份:/标签选择id='myProvince' @foreach(在第一省中的定义变量项目){选项value='@item.ProvinceID'@item.ProvinceName/option }/选择br/HR/标签城市:/label sele id=' myCity '/select script src=' http : ~/Scripts/jquery-1。10 .2 .js '/script脚本类型=' text/JavaScript ' $(文档)。就绪(函数(){ $(' #我的省份')).change(function () { //获取省份的ID var provinceID=$('#myProvince ').val();//获取城市var myCity=$(' # myCity ');//加入测试代码调试器;$.Ajax({ URL : '/省份/getallcity by provincid/' provincid,type: 'post ',dataType: 'json ',内容类型: ' application/JSON ',成功:函数(结果){ var myHTML=我的城市。html(" ");//赋值之前先清空$.每个(结果,函数(我,数据){ myHTML='option value=' data .CityID " "数据“城市名称”/选项;});我的城市。追加(MyHTML);},错误:函数(结果){ alert(响应文本);} });})})/脚本好了,弄好之后,运行程序:选择一个省份,对应的市的信息就被我们查出来了,绑定到另外的市的下拉框中了。
总结:这篇文章,虽然基础,但是很重要,平时开发中,遇到很多这样的场景。还有就是仰角指示器用多了,ADO .网也不能忘记。连接模式和非链接模式查询数据库6个步骤,牢记心中。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
版权声明:ASP .NET MVC下拉框联动实例解析是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。