DOTNET-MVC中DropDownList设置默认选中状态的问题

最近在项目中发现一个问题,组里的人对DropDownList的设置默认选中状态的问题不是很明了,经过我的分析,最主要的原因应该还是对MSDN中的方法理解不够的原因吧。

起初他们是这样使用的:

<%  Html.DropDownListFor(m=>m.ModleProp, ViewData["proplist"] as SelectList)%>

他们说以前都是这么用,就可以实现初始默认选中与m.ModleProp相匹配的。我以前没干过MVC,没经验,所以就怀着将信将疑的心态,查了一下MSDN,结果发现,选中状态根本就和m.ModleProp无关,完全就是根据SelectList的SelectValue来的。

方法原型:

DropDownList(String, IEnumerable<SelectListItem>)
 

所以说,如果要改变默认选中项,就需要修改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