我从表中填充了一个下拉列表,问题是当我转到“编辑”页面时,它没有选择值,而是显示“选择公司”。
我使用AspNetUsers默认表,并在其上添加了另一列称为Company(Integer)。
我还有另一个名为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);
答案 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" })