Установка:
Я создал контроллер с помощью MvcScaffolding.
Для свойства Model.IdCurrencyFrom леса создали Html.DropDownListFor:
@Html.DropDownListFor(model => model.IdCurrencyFrom,
((IEnumerable<FlatAdmin.Domain.Entities.Currency>)ViewBag.AllCurrencies).Select(option => new SelectListItem {
Text = (option == null ? "None" : option.CurrencyName),
Value = option.CurrencyId.ToString(),
Selected = (Model != null) && (option.CurrencyId == Model.IdCurrencyFrom)
}), "Choose...")
Это прекрасно работает как с новыми записями, так и с редактированием существующих.
Проблема:
Существует только 3 валюты: AR $, US $ и GB £. Итак, вместо выпадающего списка я хочу ListBox.
Так что я изменил вышеприведенное на:
@Html.ListBoxFor(model => model.IdCurrencyFrom,
((IEnumerable<FlatAdmin.Domain.Entities.Currency>)ViewBag.AllCurrencies).Select(option => new SelectListItem {
Text = (option == null ? "None" : option.CurrencyName),
Value = option.CurrencyId.ToString(),
Selected = (Model != null) && (option.CurrencyId == Model.IdCurrencyFrom)
}))
Теперь я получаю ArgumentNullException, имя параметра: источник, но только при редактировании существующей записи. Создание новых записей, это отлично работает.
Вопросы:
Что происходит?!
Ничего не изменилось. Переключение обратно на DropDownListFor и все работает нормально. Переключение на ListBox (в отличие от ListBoxFor) и я получаю сообщение об ошибке.
Модель не является нулевой (как я уже сказал, она отлично работает с DropDownListFor) ... и у меня закончились идеи.