下拉列表未在“编辑”页面上显示值

时间:2018-11-07 04:23:41

标签: asp.net-mvc dropdownlistfor

我从表中填充了一个下拉列表,问题是当我转到“编辑”页面时,它没有选择值,而是显示“选择公司”。

 我使用AspNetUsers默认表,并在其上添加了另一列称为Company(Integer)。enter image description here
我还有另一个名为TBL_COMP的模型和表,它映射到AspNetUsers。

 public class TBL_COMP
{
    [Key]
    public int CompId { get; set; }
    public string CompDesc { get; set; }
}


在我的模型(UserViewModels)中,我有这个

    public int Company { get; set; }

    [ForeignKey("Company")]
    public TBL_COMP TBL_COMP { get; set; }

这是视图中的下拉列表:

@Html.DropDownListFor(m => m.Company, new SelectList(ViewBag.Company, "Value", "Text"), "Select Company", new { @class = "form-control" })

这是控制器:

ViewBag.Company = new SelectList(db.TBL_COMP.ToList(), "CompId", "CompDesc", user.Company);

1 个答案:

答案 0 :(得分:0)

ViewBag.Company已包含在SelectList中,只需将其投射到视图上(从现有的SelectList创建另一个SelectList是没有意义的):

@Html.DropDownListFor(m => m.Company, ViewBag.Company as SelectList, "Select Company", 
                      new { @class = "form-control" })

或者改用强类型的IEnumerable<SelectListItem>

视图模型

public class UserViewModels
{
    // other properties

    public List<SelectListItem> Companies { get; set; }
}

控制器操作

var model = new UserViewModels();

model.Companies = db.TBL_COMP.Select(x => new SelectListItem { Text = x.CompDesc, Value = x.CompId }).ToList();

查看

@Html.DropDownListFor(m => m.Company, Model.Companies, "Select Company", new { @class = "form-control" })