以前使用WebForm变成时,下拉框传值只需直接在后台绑定代码就可以了。现在我们来看看在MVC中DropDownList是如果和接受从Controller传过来的值的。
第一种:使用DropDownList
控制器代码:
public ActionResult Index()
{
//1.1查询YzSeriesEntity的数据
List seriesList = seriesBLL.LoadEnities().ToList();
//1.2将YzSeriesEntity的数据封装到 SelectList中,制定要生成下拉框选项的value和text属性
SelectList selList1 = new SelectList(seriesList, "SerialName", "SerialName");
//2.1查询YzDivisionEntity的数据
List divisionList = divisionBLL.LoadEnities().ToList();
//2.2讲YzDivisionEntity的数据封装到 SelectList中,制定要生成下拉框选项的value和text属性
SelectList selList2 = new SelectList(divisionList, "DivisionName", "DivisionName");
//3.调用Selectlist的As方法,自动生成SelectListItem集合,并存入ViewBag中
ViewBag.selList1 = selList1.AsEnumerable();
ViewBag.selList2 = selList2.AsEnumerable();
return View();
}
视图代码:
@using (Ajax.BeginForm("Add", new AjaxOptions() { onSuccess = "afterAdd" }))
{
| 编号: | @Html.TextBox("StaffID") |
| 姓名: | @Html.TextBox("StaffName") |
| 性别: | 男 女 |
| 所在系列: |
@Html.DropDownList("SerialName", ViewBag.selList1 as IEnumerable |
| 科室或年级组: |
@Html.DropDownList("DivisionName", ViewBag.selList2 as IEnumerable |
| 任课学科: | @Html.TextBox("Subjects") |
| 聘任日期: | @Html.TextBox("EngageDate") |
| 参加工作日期: | @Html.TextBox("WorkDate") |
| 职称: | @Html.TextBox("jobQualification") |
| 身份证号: | @Html.TextBox("IdentityCard") |
效果显示:
第二种:使用
视图代码:
@Html.Label("请选择权重:")
控制器代码:
//下拉框对应的列表
public ActionResult ListOption()
{
//2.1.查询出weight实体,并将其转成DTO类型
List weightList =
weightBLL.LoadEnities().ToList().Select(s => s.ToDto()).ToList();
//2.2返回json
return Json(weightList, JsonRequestBehavior.AllowGet);
}
效果显示:
总结:
两种传值方式的比较:
第一种是控制器通过ViewBag传值,前台通过@Html.DropDownList接收;第二种是通过Json传值,前台通过url绑定valueField和textField的值来获取数据。两者没有什么太大的不同,但是由于传值使用接收的,使用的是HTML标签,所以还可以用来绑定其他的js事件,所以如果有功能需要的话,后者要比前者灵活些。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。



