现在我已经在Identity 2.0 中向ApplicationUser模型添加了一个Region
在UsersAdmin视图的Edit操作中,我有以下股票代码来显示/编辑用户的Region:
<div class="form-group">
@Html.LabelFor(model => model.Region, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.Region, new { @class = "form-control" })
</div>
</div>
如何将该TextBox制作成DropDownList,允许用户从Region名称列表中进行选择,其中Regions是ApplicationDbContext的一部分?
public class Region
{
[Key]
public Guid ID { get; set; }
public string Name { get; set; }
public Company Company { get; set; }
public Region()
{
this.ID = Guid.NewGuid();
}
}
您可以使用视图模型。为了呈现下拉列表,您需要在视图模型中使用两个属性:一个标量属性用于保存所选值,另一个集合属性用于表示要显示的可能值列表:
public class MyViewModel
{
public Guid SelectedRegionID { get; set; }
public IEnumerable<SelectListItem> Regions { get; set; }
}
您的控制器操作将填充并传递到视图:
public ActionResult Index()
{
var viewModel = new MyViewModel();
viewModel.Regions = db.Regions.ToList().Select(x => new SelectListItem
{
Value = x.ID.ToString(),
Text = x.Name,
});
return View(viewModel);
}
在相应的强类型视图中,您可以使用DropDownListFor
助手:
@model MyViewModel
<div class="form-group">
@Html.LabelFor(model => model.Region, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(m => m.SelectedRegionID, Model.Regions, new { @class = "form-control" })
</div>
</div>