Ожидание предметов для Html DropDownFor - PullRequest
0 голосов
/ 09 июля 2020

Привет. Когда я использую следующее для своего раскрывающегося списка

 @Html.DropDownListFor(x => x.OIC_2, new SelectList(ViewBag.StaffMembers, "Value", "Text"))

Я получаю следующую ошибку, даже если в панели просмотра есть данные для сотрудников

Viewbag.StaffMembers составлен from

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: значение не может быть нулевым. (Параметр 'items') Microsoft.AspNetCore. Mvc .Rendering.MultiSelectList..ctor (элементы IEnumerable, строка dataValueField, строка dataTextField, IEnumerable selectedValues, строка dataGroupField) Microsoft.AspNetCore. Mvc .Rendering.SelectList..ctor (Элементы IEnumerable, строка dataValueField, строка dataTextField, объект selectedValue) Microsoft.AspNetCore. Mvc .Rendering.SelectList..ctor (элементы IEnumerable, строка dataValueField, строка dataTextField) CallSite.Target (Closure, CallSite, Type, object, string , строка) System.Dynami c .UpdateDelegates.UpdateAndExecute4 (Сайт CallSite, T0 arg0, T1 arg1, T2 arg2, T3 arg3) AspNetCore.Views_MISObjects_Edit.b__27_0 () в Edit.cshtml + @ Html .DropDownListFor (x => x.OIC_2, новый SelectStaff (ViewBag.Members) Значение »,« Текст »))

1 Ответ

1 голос
/ 09 июля 2020

Лучше попробуйте следующее:

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");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...