设置:
我已经使用 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 一起工作得很好)......而且我已经没有想法了。