Я скаффолдировал контроллер с помощью MvcScaffolding.
Для a свойство, 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) ... и у меня закончились идеи.