欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP.NET MVC中为DropDownListFor设置选中项的方法

程序员文章站 2024-02-20 21:46:10
在mvc中,当涉及到强类型编辑页,如果有select元素,需要根据当前model的某个属性值,让select的某项选中。本篇只整理思路,不涉及完整代码。 □ 思路 往前...

在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>