いくつかのリストを含むモデルがあります:
[Display(Name = "Facilities")]
public List<facility> Facilities { get; set; }
[Display(Name = "Accreditations")]
public List<accreditation> Accreditations { get; set; }
これらのリストは、最初にコントローラーから入力します。
public ActionResult Register()
{
var viewModel = new RegisterModel();
viewModel.Facilities = m_DBModel.facilities.ToList();
viewModel.Accreditations = m_DBModel.accreditations.ToList();
return View(viewModel);
}
それらが私のビューに到達すると、DB レコードが取り込まれます (素晴らしい)。次に、これらのリストをチェックボックスとして表示する部分ビューにモデルを渡し、ユーザーが操作できるようにします (foreach ループの代わりに for ループを使用する別の提案に基づいて試しましたが、違いはありませんでした)。
@model LanguageSchoolsUK.Models.RegisterModel
@foreach (var item in Model.Facilities)
{
@Html.Label(item.name);
@Html.CheckBox(item.name, false, new { id = item.facility_id, @class = "RightSpacing", @description = item.description })
}
フォームを送信すると、今度はコントローラーでオーバーロードされた登録関数を呼び出してコントローラーに戻ります。
[HttpPost]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Do stuff
}
return View(model);
}
問題は、リスト (施設と認定) を含むモデル パラメーターが、リストが null であることを示していることです。
誰かが私が間違っていることを教えてもらえますか?最初に通過したコレクションが入力されていないのはなぜですか?
ありがとう。