私は MVC が初めてで、これを理解するのに苦労しています。
簡単にするために、「Person」オブジェクトがあり、このオブジェクトには「EmailaddressList」という IEnumerable プロパティがあります。
Visual Studio 2012 を使用して編集ページを生成しました。メイン オブジェクトのプロパティは、Name や LastName などのテキスト ボックスを含む編集ページで生成されます。
ただし、サブオブジェクトの IEnumerable リスト内の電子メール アドレスのリストは、私の見解では自動的に生成されません。これで問題ありません。メールアドレスの種類ごとにタブを使用してコードを手書きしました。
ここまでは順調ですね。
問題: HTTP-Post メソッドでモデル (人物オブジェクト) を受け取ると、EmailAddressList が null です。どうしてこうなったのか、ビューに送ったらnullじゃなかった。メールアドレスが一覧表示されているタブが部分的に表示されています。誰かが私にいくつかのヒントを教えてもらえますか?それは私がここで見逃しているものですか?*
ビューコード
<div id="tabs">
<ul>
@foreach (var item in Model.EmailAddressList)
{
<li><a href="#@item.AddressType">@Html.Label(item.AddressType)</a></li>
}
</ul>
@foreach (var item in Model.EmailAddressList)
{
<div id="@item.AddressType">
<p>
@Html.TextBoxFor(s => item.EmailAddress, new { @class = "input-xxlarge" })
</p>
</div>
}
</div>
コントローラ(受信メソッド) ここで person.EmailAddressList は null
[HttpPost]
public ActionResult Create(Person person)
{
if (ModelState.IsValid)
{
personRepository.InsertOrUpdate(person);
personRepository.Save();
return RedirectToAction("Index");
}
else
{
return View();
}
}