ASP.NET?MVC通過勾選checkbox更改select的內容
遇到了這樣的一個需求:通過勾選checkbox來更改select的內容。
在沒有勾選checkbox之前是這樣的:
在勾選checkbox之后是這樣的:
想通過ajax異步來實現。所以,從控制器拿到的json數據,在控制器中應該先是Dictionary<string, string>類型,然后再轉換成json格式。
在沒有勾選checkbox之前,select中內容對應的Model為:
public class Old
{
public int Id { get; set; }
public string Name { get; set; }
}在勾選checkbox之后,select中內容對應的Model為:
public class NewItem
{
public int Id { get; set; }
public string Name { get; set; }
}Home控制器中應該給出對應的json數據。
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視圖中,根據checkbox是否勾選來呈現不同的內容。
@{
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>
}以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接
相關文章
aspnetpager重寫url(偽靜態(tài))配置實例
這幾天要用到AspNetPager來做偽靜態(tài)分頁,找了些資料并把修改過程記錄下來。2013-04-04
FileUpload使用Javascript檢查擴展名是否有效實現思路
在JavaScript獲取FileUpload控件的文件路徑,并取得路徑中的文件擴展名,再與陣列中的擴展名比較,如果存在,說明上傳的文件是有效的,反之無效,感興趣的朋友可以了解下,或許對你有所幫助2013-02-02
TreeView創(chuàng)建IHierarchicalDataSource類型的數據源實現
為TreeView創(chuàng)建IHierarchicalDataSource類型的數據源實現2009-01-01



