遇到了这样的一个需求:通过勾选checkbox来更改select的内容。
在没有勾选checkbox之前是这样的:
202291682509298.png
在勾选checkbox之后是这样的:
202291682509299.png
想通过ajax异步来实现。所以,从控制器拿到的json数据,在控制器中应该先是Dictionary类型,然后再转换成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
{
new Old(){Id = 1, Name = "老版本1"},
new Old(){Id = 2, Name = "老版本2"},
new Old(){Id = 3, Name = "老版本3"}
};
IDictionary result = new Dictionary {{"-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
{
new NewItem(){Id = 1, Name = "新版本1"},
new NewItem(){Id = 2, Name = "新版本2"}
};
IDictionary result = new Dictionary { { "-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";
}
Index
是否选择新版本:
@section scripts
{
}
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对知鸟论坛的支持。如果你想了解更多相关内容请查看下面相关链接 |