C# 应为Html下拉列表中的项目

C# 应为Html下拉列表中的项目,c#,asp.net-core,C#,Asp.net Core,嗨,当我在下拉列表中使用以下内容时 @Html.DropDownListFor(x => x.OIC_2, new SelectList(ViewBag.StaffMembers, "Value", "Text")) 即使viewbag中有员工的数据,我也会遇到以下错误 Viewbag.StaffMembers由以下成员组成: public void GetStaffMemebers() { List<SelectListItem&

嗨,当我在下拉列表中使用以下内容时

 @Html.DropDownListFor(x => x.OIC_2, new SelectList(ViewBag.StaffMembers, "Value", "Text"))
即使viewbag中有员工的数据,我也会遇到以下错误

Viewbag.StaffMembers由以下成员组成:

public void GetStaffMemebers() {
    List<SelectListItem> listItems = new List<SelectListItem>();
    var items = _context.StaffMember.Where(w=>w.isAcitve ==true && w.isDeleteted ==false).ToList();
    foreach (var item in items) {

            SelectListItem listItem = new SelectListItem();
            listItem.Text = item.FirstName + " " + item.LastName ;
            listItem.Value = item.Id.ToString();
            listItems.Add(listItem);
   }
        ViewBag.StaffMembers = listItems;        
}
public void GetStaffMemebers(){
List listItems=新列表();
var items=\u context.StaffMember.Where(w=>w.isacitive==true&&w.isdeleted==false).ToList();
foreach(项目中的var项目){
SelectListItem listItem=新建SelectListItem();
listItem.Text=item.FirstName+“”+item.LastName;
listItem.Value=item.Id.ToString();
添加(listItem);
}
ViewBag.StaffMembers=列表项;
}
错误

ArgumentNullException:值不能为null。(参数“items”) Microsoft.AspNetCore.Mvc.Rendering.MultiSelectList..ctor(IEnumerable 项,字符串dataValueField,字符串dataTextField,IEnumerable selectedValues,字符串数据组字段) Microsoft.AspNetCore.Mvc.Rendering.SelectList..ctor(IEnumerable items, 字符串dataValueField、字符串dataTextField、对象selectedValue) Microsoft.AspNetCore.Mvc.Rendering.SelectList..ctor(IEnumerable items, 字符串dataValueField,字符串dataTextField)CallSite.Target(闭包, 调用站点、类型、对象、字符串、字符串) System.Dynamic.UpdateLegates.UpdateAndExecute4(调用站点,T0 arg0、T1 arg1、T2 arg2、T3 arg3) 中的AspNetCore.Views\u MISObjects\u Edit.b\u 27\u 0() Edit.cshtml + @DropDownListFor(x=>x.OIC_2,新建) 选择列表(ViewBag.StaffMembers,“值”、“文本”))

最好尝试以下方法:

public void GetStaffMemebers() 
{
    var items = _context.StaffMember.Where(sm => sm.isAcitve ==true && sm.isDeleteted ==false).Select(sm => new 
    {
         Name =  sm.FirstName + " " + sm.LastName,
         Id = sm.Id.ToString()
    }).ToList();

    ViewBag.StaffMembers = items;        
}
现在确保在操作方法中调用了
GetStaffMemebers()

然后在视图中,如下所示:

@Html.DropDownListFor(m => m.OIC_2, new SelectList(ViewBag.StaffMembers,"Id","Name"), "Select Member");

您的操作方法在哪里?您是在从控制器操作调用
GetStaffMemebers
方法吗?为什么他们从使用SelectList变为使用该方法多年了。@rogue39请看。它需要一个可数的项。