DropDownListFor不显示从linq抓取的所有用户

时间:2019-04-08 19:17:27

标签: c# asp.net-mvc razor

我有一些MVC代码,我试图使用linq来获取用户列表,并使用Html.DropDownListFor()来显示它们。我已经调试了代码,并且linq返回了8个用户(应该这样),但是当我运行页面并单击下拉菜单时,仅显示“ All”作为选项。

我错过了什么吗?

控制器:

var distinctExecutedByUsers = db.validation_results
      .Where(c => c.id_merchant == CurrentCasinoID)
      .Select(u => u.executed_by)
      .Distinct()
      .ToList();
foreach (var user in distinctExecutedByUsers)
{
    vm.ExecutedByUsers.Add(new SelectListItem
    {
        Text = user, Value = user
    });
}

型号:

public PVReportViewModel()
{
    PVReportPostData = new PVReportPostData();
    Results =  new List<PVReportResult>();

    ExecutedByUsers = new List<SelectListItem>{};
}

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

查看:

  <div class="form-group form-group-sm">
       <text>Executed By User</text><!--Need to add ExecutedBy to model-->
       @Html.DropDownListFor(o => o.PVReportPostData.ExecutedBy, 
                Model.ExecutedByUsers, "All", new { Class = "form-control" })
  </div>

1 个答案:

答案 0 :(得分:0)

下拉列表为空白,因为直到单击按钮后才运行控制器功能,因此直到查询已经运行,才会加载linq查询中的数据。

要解决此问题,我只是将其移至函数之外。