Html.DropDownListFor的用法总结
在ASP.NET MVC中可以用DropDownListFor的方式来让用户选择已定列表中的一个数值。
注:重点是要将DropDownList的数据源转换成IEnumerable<SelectListItem>类型的结合;
SelectListItem类在System.Web.MVC命名空间下,其成员如下:
- public bool Disabled { get; set; }
- public SelectListGroup Group { get; set; }
- public bool Selected { get; set; }
- public string Text { get; set; }
- public string Value { get; set; }
1 //处理State,将IEnumerable<State>集合转换为IEnumerable<SelectListItem>集合 2 public IEnumerable<SelectListItem> GetStates() 3 { 4 return _usStateService.GetStates().OrderBy(c => c.StateAbbreviation).Select(state => new SelectListItem 5 { 6 Text = state.StateAbbreviation, 7 Value = state.StateAbbreviation 8 }); 9 }
使用如下示例:
- 首先我们要定义一个Model,用户在DropDownList中选择指定的值付给属性ReadyTimeHour
1 public class EricSunModel 2 { 3 public string ReadyTimeHour { get; set; } 4 }
- Model定义完毕之后,接下来处理Controller的逻辑
- 这里使用ViewData来记录DropDownList中所要显示的所有列表数值
1 public ActionResult EricSunAction() 2 { 3 EricSunModel esModel = new EricSunModel(); 4 esModel.ReadyTimeHour = "00"; 5 6 GenerateReadyTimeViewData(); 7 8 return View(esModel); 9 } 10 11 private void GenerateReadyTimeViewData() 12 { 13 ViewData["HourList"] = GetTimeHourList(); 14 } 15 16 //这里要对集合进行处理,因为第二个参数必须是IEnumerable<SelectListItem> 类型的集合 17 private List<SelectListItem> GetTimeHourList() 18 { 19 List<SelectListItem> hourList = new List<SelectListItem>(); 20 21 for (int i = 0; i < 24; i++) 22 { 23 if (i < 10) 24 { 25 hourList.Add(new SelectListItem { Text = "0" + i.ToString(), Value = "0" + i.ToString() }); 26 } 27 else 28 { 29 hourList.Add(new SelectListItem { Text = i.ToString(), Value = i.ToString() }); 30 } 31 } 32 33 return hourList; 34 }
- 接下来我们在View中可以用下面一行代码来绑定DropDownList
- 注:第一个参数为绑定Model中的属性,即-->要为此属性赋值
- 注:第二个参数为DropDownList的所有数据源,并且必须是IEnumerable<SelectListItem>类型的集合
1 @Html.DropDownListFor(m => m.ReadyTimeHour, ViewData["HourList"] as List<SelectListItem>)
- 效果如下
- 如果我们想在DropDownList中的最顶端添加一个默认值的话,添加第三个参数
1 @Html.DropDownListFor(m => m.ReadyTimeHour, ViewData["HourList"] as List<SelectListItem>, "---Select---")
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。