首页 > 解决方案 > DropDownListFor 不显示从 linq 抓取的所有用户

问题描述

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

我错过了什么?

控制器:

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>

标签: c#asp.net-mvcrazor

解决方案


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

为了解决这个问题,我只是将它移到了函数之外。


推荐阅读