【发布时间】:2017-01-31 22:45:43
【问题描述】:
我将状态列表传递到 Html.DropDownList 中。我一直在寻找一种方法来选择其中一项作为默认项,因此如果用户没有更改任何内容,则正确的状态将传递回模型。我发现的所有内容都涉及向列表添加附加值(通常是“null”选项)。
如何默认使用已经存在的项目?
型号:
public class ListStatus
{
public string Name { get; set; }
public Guid StatusID { get; set; }
}
public class ViewModel
{
public List<ListStatus> Statuses { get; set; }
}
查看:
@Html.DropDownList("StatusID", Model.Statuses.Select(s => new SelectListItem() { Text = s.Name, Value = s.StatusID.ToString() }), new { @class = "medium", required = true })
样本数据:
'11111111-1111-1111-1111-111111111111': Option 1,
'22222222-2222-2222-2222-222222222222': Default,
'33333333-3333-3333-3333-333333333333': Option 3,
'44444444-4444-4444-4444-444444444444': Option 4
【问题讨论】:
-
您绑定到您传递给视图的模型的
StatusID属性,因此只需设置StatusID的值以匹配控制器中的选项值之一,然后再将模型传递给视图,它将被选中——这就是模型绑定的工作方式。如果视图模型不包含属性Guid StatusID,则添加一个(并且您应该使用强类型@Html.DropDownListFor(m => m.StatusID, Model.Statuses),其中Statuses是IEnumerable<SelectListItem>,并且您在控制器中生成SelectList,而不是视图。
标签: c# asp.net-mvc razor