Previously, I was using this in my model
public List<SelectListItem> StatusList { get; set; }
public string Status { get; set; }
and this in my view to bind to the Dropdownlist
@Html.DropDownListFor(model => model.Status, Model.StatusList, "")
but if I want to use
public List<ICode> StatusList { get; set; }
where ICode is as below
public interface ICode
{
int Id { get; set; }
ICodeGroup CodeGroup { get; set; }
string ShortDescription { get; set; }
string LongDescription { get; set; }
}
What should I do in my view and model?
Cybernate's solution works. You could also do:
@Html.DropDownListFor(model => model.Status,
new SelectList(Model.StatusList, "Id", "ShortDescription"))
Cybernate's version will do stronger type checking, but SelectList is more encapsulated.
Try this:
@Html.DropDownListFor(model => model.Status,
Model.StatusList.Select(a=>
new SelectListItem(){
Text=a.ShortDescription, Value=a.Id.ToString()
}),
"")
来源:https://stackoverflow.com/questions/7247871/binding-to-a-dropdownlist-in-mvc3