C# DropDownList用于不显示从linq抓取的所有用户

C# DropDownList用于不显示从linq抓取的所有用户,c#,asp.net-mvc,razor,C#,Asp.net Mvc,Razor,我有一些MVC代码,我正试图用linq获取用户列表,并使用Html.DropDownListFor()来显示它们。我已经调试了我的代码,我的linq返回8个用户(应该是这样),但是当我运行页面并单击下拉菜单时,只有“All”显示为选项 我错过什么了吗 控制器: var distinctExecutedByUsers = db.validation_results .Where(c => c.id_merchant == CurrentCasinoID) .Selec

我有一些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; }
公共PVReportViewModel() { PVReportPostData=新的PVReportPostData(); 结果=新列表(); ExecutedByUsers=新列表{}; } 用户执行的公共列表{get;set;} 视图:


由用户执行
@Html.DropDownListFor(o=>o.PVReportPostData.executeby,
Model.executeByUsers,“All”,新的{Class=“form control”})

下拉列表为空,因为只有在单击按钮后才能运行控制器功能,因此,在查询已经运行之前,不会加载linq查询中的数据


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

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


为了解决这个问题,我只需将其移出函数。

看起来合法。可以肯定的是,您正在将构建的viewmodel实例(
vm
)传递给视图,对吗?@StuartLC是的,它正在为视图中的其他内容工作,而不是这个:/看起来合法。可以肯定的是,您正在将构建的viewmodel实例(
vm
)传递给视图,对吗?@StuartLC是的,它正在为视图中的其他内容工作,而不是这个:/
  <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>