在DropDownListFor - MVC 4中使用自定义对象类型

时间:2013-03-29 21:46:45

标签: asp.net-mvc-4

@Html.DropDownListFor需要SelectListItem列表。有没有办法在这里使用自定义对象而不是选择列表项,并告诉下拉列表自定义对象的哪些属性用于值和文本?或者有一种简单的方法可以将我的客户对象转换为SelectListItem吗?

我有一个Status对象: public string StatusCode {get; set;} public string StatusCodeDescription {get; set;}

所以现在我必须编写一个for循环来将状态转换为我所有列表的SelectListItem ...这似乎需要更简单的方法......

1 个答案:

答案 0 :(得分:6)

  

@ Html.DropDownListFor需要一个SelectListItem列表。有没有   这里使用自定义对象的方式而不是选择列表项并告诉   下拉列表要用于的自定义对象的属性   价值和文字?

您可以使用SelectList constructor获取3个参数:IEnumerable<T>和2个字符串,表示自定义类型的值和文本属性的名称:

@Html.DropDownListFor(
    x => x.SelectedStatusCode, 
    new SelectList(
        Model.Satuses, 
        "StatusCode",  
        "StatusCodeDescription"
    )
)

在此示例中,我们假设Model.SatusesIEnumerable<StatusViewModel>类型的属性,其中StatusViewModel包含至少2个属性,分别绑定下拉列表的值和文本:

public class StatusViewModel
{
    public string StatusCode { get; set; } 
    public string StatusCodeDescription { get; set; }
    ...
}