設定:
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...")
これは、新しいレコードでも、既存のレコードの編集でも、正常に機能します。
問題:
通貨は、AR $、US $、GB£の3つだけです。したがって、ドロップダウンリストの代わりに、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、パラメーター名:sourceを取得しましたが、既存のレコードを編集している場合のみです。新しいレコードを作成すると、これは正常に機能します。
質問:
何が起こっている?!
何も変わっていません。DropDownListForに戻すと、すべて正常に機能します。(ListBoxForではなく)ListBoxに切り替えると、エラーが発生します。
モデルはnullではありません(私が言ったように、DropDownListForで正常に動作します)...そして私はアイデアを使い果たしました。