【问题标题】:Expecting Items for Html DropDownFor期待 Html DropDownFor 的项目
【发布时间】:2020-10-29 20:11:23
【问题描述】:

嗨,当我在下拉菜单中使用以下内容时

 @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;        
}

错误

ArgumentNullException:值不能为空。 (参数“项目”) Microsoft.AspNetCore.Mvc.Rendering.MultiSelectList..ctor(IEnumerable 项目,字符串 dataValueField,字符串 dataTextField,IEnumerable selectedValues,字符串数据组字段) Microsoft.AspNetCore.Mvc.Rendering.SelectList..ctor(IEnumerable 项目, 字符串数据值字段,字符串数据文本字段,对象 selectedValue) Microsoft.AspNetCore.Mvc.Rendering.SelectList..ctor(IEnumerable 项目, 字符串数据值字段,字符串数据文本字段)CallSite.Target(闭包, CallSite , 类型 , 对象 , 字符串 , 字符串 ) System.Dynamic.UpdateDelegates.UpdateAndExecute4(CallSite 站点,T0 arg0,T1 arg1,T2 arg2,T3 arg3) AspNetCore.Views_MISObjects_Edit.b__27_0() 在 编辑.cshtml + @Html.DropDownListFor(x => x.OIC_2, 新 SelectList(ViewBag.StaffMembers, "Value", "Text"))

【问题讨论】:

  • 你的 Action 方法在哪里?
  • 你是从控制器动作中调用GetStaffMemebers 方法吗?

标签: c# asp.net-core


【解决方案1】:

最好尝试如下:

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");

【讨论】:

  • 为什么他们改变了多年来一直使用 SelectList 的方法。
  • @rogue39nin 看看SelectList。它期望项目的 IEnumerable。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-23
  • 2011-10-31
  • 2021-08-24
相关资源
最近更新 更多