是否可以直接从实体模型创建Html.DropDownListFor?

时间:2016-02-18 18:10:17

标签: asp.net-mvc entity-framework razor

我有IEnumerable个管理员Model.managers,我希望获取IDmanagers.manager_idtextmanagers.manager_name我还在Model.SelectedManager处拥有一个选定的经理值,其中包含manager_id

我要做的是将所有这些值填入Html.DropDownListFor

它需要是所有manager_idmanager_name的列表,然后自动选择存储在Model.SelectedManager的管理器这可能是我设置它的方式吗? / p>

public string SelectedManager { get; set; }
public virtual IEnumerable<managements> managers { get; set; }

1 个答案:

答案 0 :(得分:2)

我相信你正在努力做到以下几点:

在服务层(或控制器)中,您从管理员List中抓取SelectListItem IEnumerable

model.ManagerList = managers.Select(i => new SelectListItem()
               {
                    Text = i.manager_name,
                    Value = i.manager_id.ToString()
               }).ToList());

然后,在您的视图模型中,您需要SelectedManager for Id和此经理列表(SelectListItem):

public string SelectedManager { get; set; }
public List<SelectListItem> ManagerList {get; set;}

并且在您的视图中,您将ManagerList对象与剃刀助手一起使用:

@Html.DropDownListFor(m => Model.SelectedManager, Model.ManagerList, 
              new {@class = "form-control input-sm whatever-css-class"})

希望这有帮助。

修改:我始终将所选的ID用作int而不是string。所以我实际上并未将其作为string进行测试,如果int不起作用,您可能希望将其用作string