绑定到MVC3中的DropDownList

时间:2011-08-30 18:19:30

标签: asp.net-mvc-3 html.dropdownlistfor

以前,我在我的模型中使用它

 public List<SelectListItem> StatusList { get; set; }
 public string Status { get; set; }    

这在我看来要绑定到Dropdownlist

 @Html.DropDownListFor(model => model.Status, Model.StatusList, "")

但如果我想使用

  public List<ICode> StatusList { get; set; }

其中ICode如下

 public interface ICode
{
    int Id { get; set; }
    ICodeGroup CodeGroup { get; set; }
    string ShortDescription { get; set; }
    string LongDescription { get; set; }
}

我应该在视图和模型中做些什么?

2 个答案:

答案 0 :(得分:2)

试试这个:

@Html.DropDownListFor(model => model.Status, 
 Model.StatusList.Select(a=> 
  new SelectListItem(){
   Text=a.ShortDescription, Value=a.Id.ToString()
  }),
 "")

答案 1 :(得分:2)

Cyber​​nate的解决方案有效。你也可以这样做:

@Html.DropDownListFor(model => model.Status, 
     new SelectList(Model.StatusList, "Id", "ShortDescription"))

Cyber​​nate的版本将进行更强大的类型检查,但SelectList更加封装。