ASP.NET MVC中为DropDownListFor设置选中项的方法
在mvc中,当涉及到强类型编辑页,如果有select元素,需要根据当前model的某个属性值,让select的某项选中。本篇只整理思路,不涉及完整代码。
□ 思路
往前台视图传的类型是list<selectlistitem>,把selectlistitem选中项的selected属性设置为true,再把该类型对象实例放到viewbag,viewdata或model中传递给前台视图。
通过遍历list<selectlistitem>类型对象实例
□ 控制器
public actionresult someaction(int id) { //从数据库获取domain model var domainmodel = modelservice.loadentities(m => m.id == id).firstordefault<model>(); //通过某个方法获取list<selectlistitem>类型对象实例 list<selectlistitem> items = somemethod(); //遍历集合,如果当前domain model的某个属性与selectlistitem的value属性相等,把selectlistitem的selected属性设置为true foreach(selectlistitem item in items) { if(item.value == convert.tostring(domainmodel.某属性)) { item.selected = true; } } //把list<selectlistitem>集合对象实例放到viewdata中 viewdata["somekey"] = items; //可能涉及到把domain model转换成view model return partialview(domainmodel); }
□ 前台视图显示
@model domainmodel
@html.dropdownlistfor(m => m.someproperty,(list<selectlistitem>)viewdata["somekey"],"==请选择==")
通过遍历model集合
给view model设置一个bool类型的字段,描述是否被选中。
把model的某些属性作为selectlistitem的text和value值。根据view model中的布尔属性判断是否要把selectlistitem的selected设置为true.
□ view model
public class department { public int id {get;set;} public string name {get;set;} public bool isselected {get;set;} }
□ 控制器
public actionresult index() { sampledbcontext db = new sampledbcontext(); list<selectlistitem> selectlistitems = new list<selectlistitem>(); //遍历department的集合 foreach(department department in db.departments) { selectlistitem = new selectlistitem { text = department.name, value = department.id.tostring(), selected = department.isselected.hasvalue ? department.isselected.value : false } selectlistitems.add(selectlistitem); } viewbag.departments = selectlistitems; return view(); }
下面是其它网友的补充:
后台代码:
public actionresult index(formcollection collection) { ilist<project> li = utility.sqlhelper.getprojectlist(); selectlist selec = new selectlist(li, "id", "name"); if (collection["drop"] != null) { string projectid = collection["drop"]; selec = new selectlist(li, "id", "name", projectid);//根据返回的选中项值设置选中项 viewdata["ruturned"] = collection["drop"]; } viewdata["drop"] = selec; return view(); }
前端代码:
@using (html.beginform()){
@html.dropdownlist("drop", viewdata["d"] as selectlist)
<input type="submit" value="查看对应分组列表" />
}
<p> 当前项目id: @viewdata["ruturned"]</p>
上一篇: ftp://用户名:密码@地址:端口号
下一篇: EXP/IMP命令 Mobile.net