Tag Helper Select元素为空,即使其数据源不是

时间:2016-06-20 03:54:07

标签: c# asp.net-core asp.net-core-mvc visual-studio-2015 tag-helpers

我正在使用“数据库优先模型”的ASP.NET Core MVC RC2项目。该数据库是着名的Northwind数据库。一切正常,除非ViewBag数据填充{“1}}数据的”选择标记助手“(HTML下拉列表)为空,即使ViewBag数据不是< / strong>空:

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>

注意:在调试过程中,当我在[{1}}处设置断点并将鼠标悬停在<select asp-for="Country" asp-items="@ViewBag.Countries" class="form-control" />上时,我可以看到ViewBag中的国家/地区已填写。

1 个答案:

答案 0 :(得分:4)

<select>不是自我结束标记。它必须是

<select asp-for="Country" asp-items="ViewBag.Countries" class="form-control"></select>