MVC アプリケーションには、いくつかの DropDownLists があります。コントローラーで を作成IEnumerable<SelectListItem>
し、ビューに転送します。残念ながら、検証エラーが発生した場合は、それらのリストを再作成する必要があります。そうしないと、ビューのレンダリングが失敗します。
私がやっているコントローラーアクションメソッドで:
var possibilities = _repo.Objects.Select(o=>new SelectListItem(...));
viewmodel.Possibilities = possibilities;
return View(viewmodel);
ビューモデルには、次のように定義された Possibilities プロパティがあります。
IEnumerable<SelectListItem> Possibilities { get; set; }
そして私の見解では、私はそれにアクセスします:
@Html.DropDownListFor(vm=>vm.ThePossibility, vm.Possibilities)
問題は、フォーム ポスト アクション メソッドが呼び出されたときに、渡されたビュー モデルに null が含まれているためPossibilities
、次のように呼び出した場合:
if(!ModelState.IsValid)
return View(model);
ビューはレンダリングされません。
ポスト アクション メソッドでプロパティが null である理由は理解できますが、これを修正する最善の方法は何ですか? これらのリストを再初期化したくありません。
ありがとう。