EditUserViewModel需要一个DropDownListFor()



现在我已经在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>

相关内容

  • 没有找到相关文章

最新更新