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

Dropdownlist not displaying value on Edit page

我从 table 填充下拉列表,问题是当我转到“编辑”页面时,它没有 select 值而是显示 "Select Company"。

我使用 AspNetUsers 默认 table,并在其上添加另一列名为公司(整数)。
我有另一个模型 & Table 称为 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);

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" })