Использование ASP. Net core 2.2 в VS 2017 (MVC):
У меня есть экран на основе мастера, в котором есть раскрывающийся список организаций. Когда я загружаю запись из базы данных, я хочу установить список выбора для значений в БД.
Оповещение о спойлере: указанный элемент не выбирается при первоначальном отображении страницы.
При выборе элемента вручную, нажатии кнопки «Далее» и нажатии кнопки «Предыдущий» возвращая нас на первую страницу, элемент выбирается так, как я намереваюсь.
Ни один из методов ниже не устанавливает свойство «Выбрано» выбранного элемента («0403») при загрузке модели в контроллер для первого показа.
Сравнение в методе 2 никогда не оценивается как true, хотя я вижу, что сравниваемые значения равны при отладке.
Метод 3 не находит элемент, даже если я вижу, что сравниваемые значения равно при отладке
Метод 4 не находит элемент, хотя я вижу, что сравниваемые значения равны при отладке
Все это происходит в контроллере, поэтому, пожалуйста, не предлагайте менять имя раскрывающегося списка в представлении.
** Таблица организации
ORG ID OrgName**
0004 Org 4
0007 Org 7
0008 Org 8
0403 Org 403
Это мой исходный запрос:
var orgsQuery = from s in _context.Orgs
orderby s.OrgID
select s;
Это различные способы, которые я пытался построить Список выбора в контроллере:
1).
SelectList oList = new SelectList(orgsQuery.AsNoTracking(), "OrgID", "OrgName", selectedOrg);
2).
List<SelectListItem> oList = new List<SelectListItem>();
foreach ( var item in OrgsQuery)
{
oList.Add(new SelectListItem()
{
Text = item.OrgName,
Value = item.OrgID,
Selected = (item.OrgID == (string)selectedOrg ? true : false)
});
}
3).
if (selectedOrg != null)
{
oList = new SelectList(OrgsQuery.AsNoTracking(),"OrgID", "OrgName", OrgsQuery.First(s =>
s.OrgID == (string)selectedOrg));
}
else
{
oList = new SelectList(OrgsQuery.AsNoTracking(), "OrgID", "OrgName", selectedOrg);
}
4).
SelectList oList =
new SelectList(_context.Org.OrderBy(r => r.OrgID),
_context.Org.SingleOrDefault(s => s.OrgID == (string)selectedOrg))