我正在使用“数据库优先模型”的 ASP.NET Core MVC RC2 项目。该数据库是著名的Northwind 数据库。一切正常,除了应该填充ViewBag
数据的“选择标记帮助程序”(一个 HTML 下拉列表)是空的,即使ViewBag
数据不为空:
以下操作方法CustomersController
正确显示所有客户的列表:
public IActionResult Index()
{
List<Customers> data = repository.SelectAll();
return View("/views/Northwind/Index.cshtml", data);
}
当用户单击记录上的“编辑”链接时,以下Edit
操作会在“编辑”表单中正确显示该记录值,但国家/地区的下拉列表为空:
public IActionResult Edit(string id)
{
Customers data = repository.SelectByID(id);
var query = (from c in repository.Context.Customers
orderby c.Country ascending
select new SelectListItem() { Text = c.Country, Value = c.Country }
).Distinct();
List<SelectListItem> countries = query.ToList();
ViewBag.Countries = countries;
return View("/views/Northwind/Edit.cshtml", data);
}
以下是显示可编辑数据的“视图”,但下拉列表为空白:
@model MVCCoreCR2_Project.Models.Customers
<div class="form-group">
<label asp-for="Country" class="col-md-2 control-label"></label>
<div class="col-md-10">
<select asp-for="Country" asp-items="@ViewBag.Countries" class="form-control" />
<span asp-validation-for="Country" class="text-danger" />
</div>
</div>
注意:在调试过程中,当我设置断点<select asp-for="Country" asp-items="@ViewBag.Countries" class="form-control" />
并将鼠标悬停在上面时,@ViewBag.Countries
我可以看到 ViewBag 中的国家/地区已填充。