基于MVC3方式實(shí)現(xiàn)下拉列表聯(lián)動(dòng)(JQuery)
要達(dá)到的效果是,點(diǎn)擊一個(gè)下拉框,則另一個(gè)下拉框的值發(fā)生對(duì)應(yīng)變化。如:選擇中國,則另個(gè)一下拉框里顯示中國各個(gè)省份。
傳統(tǒng)的HTML方式比較簡(jiǎn)單,實(shí)際上基于MVC的實(shí)現(xiàn)方式也大同小異。
直接上代碼:
public class DP_Provice
{
public int proviceID { get; set; }
public string ProviceName { get; set; }
public int ProviceNode { get; set; }
public virtual List<DP_City> citySource { get; set; }
}
public class DP_City
{
public int CityNode { get; set; }
public string CityName { get; set; }
public string ProviceNode { get; set; }
}
對(duì)以上涉及到的實(shí)體類予以賦值,暫時(shí)使用一個(gè)靜態(tài)類初始化簡(jiǎn)單數(shù)據(jù):
public static class DPDataSource
{
public static List<DP_Provice> InitalData()
{
List<DP_Provice> source = new List<DP_Provice>
{
new DP_Provice{ ProviceNode=1, ProviceName="北京", citySource=new List<DP_City>{
new DP_City{
CityNode=11, CityName="北京海淀"
},
new DP_City{
CityNode=12,CityName="北京西城"
}
}},
new DP_Provice{ ProviceNode=2, ProviceName="山東", citySource=new List<DP_City>{
new DP_City{
CityNode=21, CityName="濟(jì)南"
},
new DP_City{
CityNode=22,CityName="德州"
}
}},
new DP_Provice{ ProviceNode=3, ProviceName="河北", citySource=new List<DP_City>{
new DP_City{
CityNode=31, CityName="石家莊"
},
new DP_City{
CityNode=32,CityName="衡水"
}
}}
};
return source;
}
}
具體在Controller中的調(diào)用,因?yàn)槭褂玫腏Query中的AJAX方式,所以返回的結(jié)果類型為Json;
public ActionResult Index()
{
return View("DPShow");
}
List<DP_Provice> source = DPDataSource.InitalData();
public JsonResult GetProvinceSource()
{
if (source == null || source.Count < 0)
{
source = DPDataSource.InitalData();
}
return Json(source, JsonRequestBehavior.AllowGet);
}
public JsonResult GetCitySource(string proviceName)
{
source = DPDataSource.InitalData();
List<DP_City> citySource = new List<DP_City>();
citySource = source.Where(a => a.ProviceNode.ToString().Contains(proviceName)).First().citySource;
return Json(citySource, JsonRequestBehavior.AllowGet);
}
數(shù)據(jù)準(zhǔn)備完畢,此時(shí)需要Razor視圖中進(jìn)行綁定和展示,代碼如下:
@model MvcApplication.Models.DP_Provice
@{
ViewBag.Title = "DPShow";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<script type="text/javascript">
$(function myfunction() {
GetPlant();
//初始化省份數(shù)據(jù)
$("#ddlProvince").change(function ff() { //設(shè)置當(dāng)省份下拉列表發(fā)生變化時(shí),更新城市數(shù)據(jù)列表
GetCity();
});
});
function GetPlant() {
$("#ddlProvince").empty();
var url = "/Dropdown/GetProvinceSource/";
$.getJSON(url, function (data) {
$.each(data, function (i, item) {
$("<option></option>")
.val(item["ProviceNode"])
.text(item["ProviceName"])
.appendTo($("#ddlProvince"));
});
GetCity();
});
}
function GetCity() {
$("#ddlCity").empty();
var temp=$("#ddlProvince").val();
var url ="@Url.Action("GetCitySource", "Dropdown")" ;
//使用MVC3中Url.Action 方法參數(shù)依次為:aciton ; controller ; area ;
$.getJSON(url,{"proviceName":temp}, function (data) {
//中間需要用到參數(shù) 所以采用在getJSON方法中實(shí)現(xiàn)
$.each(data, function (i, item) {
$("<option></option>")
.val(item["CityNode"])
.text(item["CityName"])
.appendTo($("#ddlCity"));
});
});
}
</script>
<! DOCTYPE html />
<h2>
下拉列表聯(lián)動(dòng)</h2>
<table>
<tr>
<td>
<select id="ddlProvince" />
</td>
<td>
<select id="ddlCity" />
</td>
</tr>
</table>
說明:
一般來講,采用MVC實(shí)現(xiàn)下拉列表綁定可以有多種方式,主要是數(shù)據(jù)綁定方式可以使用JQuery中的Ajax 方式,同時(shí)也可以使用自定義的基于MVC 的 Url.Acion 方式,個(gè)人建議使用基于MVC 的 Url.Acion。
一來是支持方式比較靈活,如果中間涉及到數(shù)據(jù)類型復(fù)雜,可以自定義,實(shí)現(xiàn)數(shù)據(jù)封裝;
二來是JQuery 中URL在傳遞參數(shù)時(shí)需要格式化,否則將無法找到指定的Action。
如有大家對(duì)上述說法有異議或者更好的實(shí)現(xiàn)方案,請(qǐng)給予指正或說明,謝謝。
- MVC實(shí)現(xiàn)下拉框聯(lián)動(dòng)效果(單選)
- 詳解ASP.NET MVC之下拉框綁定四種方式
- ASP.NET MVC下拉框聯(lián)動(dòng)實(shí)例解析
- asp.net mvc下拉框Html.DropDownList 和DropDownListFor的常用方法
- asp.net 自制的單選、多選列表實(shí)現(xiàn)代碼
- 在.net中用CheckBoxList實(shí)現(xiàn)單選
- asp.net中js+jquery添加下拉框值和后臺(tái)獲取示例
- ASP.NET中DropDownList下拉框列表控件綁定數(shù)據(jù)的4種方法
- asp.net 實(shí)現(xiàn)下拉框只讀功能
- MVC5下拉框綁定的方法(單選)
相關(guān)文章
jQuery實(shí)現(xiàn)ajax調(diào)用WCF服務(wù)的方法(附帶demo下載)
這篇文章主要介紹了jQuery實(shí)現(xiàn)ajax調(diào)用WCF服務(wù)的方法,以完整實(shí)例形式分析了jQuery的ajax前端調(diào)用及后臺(tái)交互調(diào)用WCF服務(wù)的相關(guān)技巧,并附帶完整實(shí)例共讀者下載,需要的朋友可以參考下2015-12-12js jquery驗(yàn)證銀行卡號(hào)信息正則學(xué)習(xí)
銀行卡號(hào)格式驗(yàn)證如何錯(cuò)誤將提示:格式錯(cuò)誤,應(yīng)該是19位數(shù)字,利用正則實(shí)現(xiàn),感興趣的朋友可以了解下,希望本文對(duì)你學(xué)習(xí)正則有所幫助2013-01-01輕松學(xué)習(xí)jQuery插件EasyUI EasyUI實(shí)現(xiàn)樹形網(wǎng)絡(luò)基本操作(2)
這篇文章主要幫助大家輕松學(xué)習(xí)jQuery插件EasyUI,針對(duì)EasyUI實(shí)現(xiàn)樹形網(wǎng)絡(luò)基本操作,分為三大方面:動(dòng)態(tài)加載、添加分頁、以及惰性加載節(jié)點(diǎn),感興趣的小伙伴們可以參考一下2015-11-11分享一些常用的jQuery動(dòng)畫事件和動(dòng)畫函數(shù)
在jquery中,jquery動(dòng)畫事件和動(dòng)畫函數(shù)經(jīng)常用的到,今天小編抽時(shí)間給大家整理了些關(guān)于常用的jquery動(dòng)畫事件和動(dòng)畫函數(shù),對(duì)jquery動(dòng)畫函數(shù)和動(dòng)畫事件相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2015-11-11jQuery刪除當(dāng)前節(jié)點(diǎn)元素
本文給大家分享一段代碼給大家介紹jquery刪除當(dāng)前節(jié)點(diǎn)元素的方法,代碼簡(jiǎn)單易懂,非常不錯(cuò),需要的朋友參考下吧2016-12-12IE中的File域無法清空使用jQuery重設(shè)File域
IE中的File域無法清空,可能你看到的是已經(jīng)沒有值了,其實(shí)它還是存在的,下面有個(gè)不錯(cuò)示例,大家可以參考下2014-04-04學(xué)習(xí)從實(shí)踐開始之jQuery插件開發(fā) 對(duì)話框插件開發(fā)
之所以寫下這篇文章,是想將我的想法分享給大家;對(duì)于初學(xué)者,我希望他能從這篇文章中獲取對(duì)他有用的東西,對(duì)于經(jīng)驗(yàn)豐富的開發(fā)者,我希望他能指出我的不足,給我更多的意見和建議;目的就是共同進(jìn)步2012-04-04