最近在项目中发现一个问题,组里的人对DropDownList的设置默认选中状态的问题不是很明了,经过我的分析,最主要的原因应该还是对MSDN中的方法理解不够的原因吧。
起初他们是这样使用的:
<% Html.DropDownListFor(m=>m.ModleProp, ViewData["proplist"] as SelectList)%>
他们说以前都是这么用,就可以实现初始默认选中与m.ModleProp相匹配的。我以前没干过MVC,没经验,所以就怀着将信将疑的心态,查了一下MSDN,结果发现,选中状态根本就和m.ModleProp无关,完全就是根据SelectList的SelectValue来的。
方法原型:
所以说,如果要改变默认选中项,就需要修改SelectList中的selectValue。最后我是这样解决的:
<% SelectList lst=ViewData["proplist"] as SelectList;
foreach(var item in lst)
{
if(lst.Value==m.ModleProp)
{
lst=new SelectList(ViewData["proplist"] as SelectList,"Value", "Text", item.Value);
break;
}
}<% Html.DropDownListFor(m=>m.ModleProp, lst)%>
%>=========================
附上SelectList构造函数说明:(IEnumerable, String, String, Object)参数
- items
- 类型:System.Collections.IEnumerable
各个项。
- dataValueField
- 类型:System.String
数据值字段。
- dataTextField
- 类型:System.String
数据文本字段。
- selectedValue
- 类型:System.Object
选定的值。=====================
另外需要说明的,如果页面只有1个Modle,也许完全不需要这样,只要在Controller里定义ViewData的时候就将其选中值确定好了,但如果是多个Modle,DropDownList是在循环内的时候,这样就能体现出来它的价值了,大家可以根据需要修改使用,谢谢。
除特别声明为转载内容外,本站所有内容均为作者原创,谢绝任何单位和个人不经许可的复制和转播!
对于确有转载需要的,请先与作者联系,在获得允许后烦请在转载时保留文章出处。
本文出自Lupin's Blog:http://www.cnzui.com/archives/531
3Q