ASP.NET?MVC通過(guò)勾選checkbox更改select的內(nèi)容
遇到了這樣的一個(gè)需求:通過(guò)勾選checkbox來(lái)更改select的內(nèi)容。
在沒(méi)有勾選checkbox之前是這樣的:
在勾選checkbox之后是這樣的:
想通過(guò)ajax異步來(lái)實(shí)現(xiàn)。所以,從控制器拿到的json數(shù)據(jù),在控制器中應(yīng)該先是Dictionary<string, string>類(lèi)型,然后再轉(zhuǎn)換成json格式。
在沒(méi)有勾選checkbox之前,select中內(nèi)容對(duì)應(yīng)的Model為:
public class Old { public int Id { get; set; } public string Name { get; set; } }
在勾選checkbox之后,select中內(nèi)容對(duì)應(yīng)的Model為:
public class NewItem { public int Id { get; set; } public string Name { get; set; } }
Home控制器中應(yīng)該給出對(duì)應(yīng)的json數(shù)據(jù)。
public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult GetOld() { var olds = new List<Old> { new Old(){Id = 1, Name = "老版本1"}, new Old(){Id = 2, Name = "老版本2"}, new Old(){Id = 3, Name = "老版本3"} }; IDictionary<string, string> result = new Dictionary<string, string> {{"-1","None"}}; foreach (var item in olds) { result.Add(item.Id.ToString(), item.Name); } return Json(result, JsonRequestBehavior.AllowGet); } public ActionResult GetNew() { var news = new List<NewItem> { new NewItem(){Id = 1, Name = "新版本1"}, new NewItem(){Id = 2, Name = "新版本2"} }; IDictionary<string, string> result = new Dictionary<string, string> { { "-1", "None" } }; foreach (var item in news) { result.Add(item.Id.ToString(), item.Name); } return Json(result, JsonRequestBehavior.AllowGet); } }
在Home/Index.cshtml視圖中,根據(jù)checkbox是否勾選來(lái)呈現(xiàn)不同的內(nèi)容。
@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Index</h2> <div> <select id="v"></select> </div> <div> <span>是否選擇新版本:</span><input type="checkbox" id="cn"/> </div> @section scripts { <script type="text/javascript"> $(function () { //初始獲取老版本 getOldOnes(); //勾選checkbox事件 $('#cn').on("change", function() { if ($(this).is(':checked')) { getNewOnes(); } else { getOldOnes(); } }); }); //獲取老版本 function getOldOnes() { $.getJSON('@Url.Action("GetOld","Home")', function(data) { var $s = $('#v'); $s.children().remove(); $.each(data, function(key, value) { $s.append('<option value="' + key + '">' + value + "</option>"); }); $s.effect('shake', { times: 4 }, 100); }); } //獲取新版本 function getNewOnes() { $.getJSON('@Url.Action("GetNew","Home")', function (data) { var $s = $('#v'); $s.children().remove(); $.each(data, function (key, value) { $s.append('<option value="' + key + '">' + value + "</option>"); }); $s.effect('shake', { times: 4 }, 100); }); } </script> }
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
- ASP.NET?MVC實(shí)現(xiàn)樹(shù)形導(dǎo)航菜單
- ASP.NET?MVC擴(kuò)展帶驗(yàn)證的單選按鈕
- ASP.NET MVC實(shí)現(xiàn)橫向展示購(gòu)物車(chē)
- ASP.NET MVC獲取多級(jí)類(lèi)別組合下的產(chǎn)品
- ASP.NET MVC使用正則表達(dá)式驗(yàn)證手機(jī)號(hào)碼
- ASP.NET?MVC實(shí)現(xiàn)登錄后跳轉(zhuǎn)到原界面
- ASP.NET?MVC使用jQuery的Load方法加載靜態(tài)頁(yè)面及注意事項(xiàng)
- ASP.NET MVC解決上傳圖片臟數(shù)據(jù)的方法
相關(guān)文章
aspnetpager重寫(xiě)url(偽靜態(tài))配置實(shí)例
這幾天要用到AspNetPager來(lái)做偽靜態(tài)分頁(yè),找了些資料并把修改過(guò)程記錄下來(lái)。2013-04-04.NET使用Hisql實(shí)現(xiàn)菜單管理(增刪改查)
這篇文章介紹了.NET使用Hisql實(shí)現(xiàn)菜單管理(增刪改查)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07詳解.NET6下的Modbus通訊和數(shù)據(jù)庫(kù)記錄
本文主要介紹了.NET6下的Modbus通訊和數(shù)據(jù)庫(kù)記錄,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04FileUpload使用Javascript檢查擴(kuò)展名是否有效實(shí)現(xiàn)思路
在JavaScript獲取FileUpload控件的文件路徑,并取得路徑中的文件擴(kuò)展名,再與陣列中的擴(kuò)展名比較,如果存在,說(shuō)明上傳的文件是有效的,反之無(wú)效,感興趣的朋友可以了解下,或許對(duì)你有所幫助2013-02-02TreeView創(chuàng)建IHierarchicalDataSource類(lèi)型的數(shù)據(jù)源實(shí)現(xiàn)
為T(mén)reeView創(chuàng)建IHierarchicalDataSource類(lèi)型的數(shù)據(jù)源實(shí)現(xiàn)2009-01-01.Net Core實(shí)現(xiàn)健康檢查的示例代碼
這篇文章主要介紹了.Net Core實(shí)現(xiàn)健康檢查的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11