この問題に関する投稿はたくさんありますが、まだ正しい解決策を見つけることができません。現在、私のモデル、ビュー、コントローラーは次のようになっています。
意見:
@model Pro.Web.Models.CatDetailsView
@using (Html.BeginForm("Details", "Cat", Model, FormMethod.Post))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary()
<h2>Details</h2>
<ol>
<li>
@Html.LabelFor(model => model.Cat.Name)
<p>@Html.DisplayFor(model => model.Cat.Name, new { @readonly = "true" })</p>
</li>
<li>
@Html.LabelFor(model => model.Cat.Owner)
<p>@Html.DisplayFor(model => model.Cat.Owner.UserName, new { @readonly = "true" })</p>
</li>
<li>
@Html.LabelFor(model => model.Cat.BornDate)
<p>@Html.DisplayFor(model => model.Cat.BornDate, new { @readonly = "true" })</p>
</li>
<li>
@Html.LabelFor(model => model.Cat.Age)
<p>@Html.DisplayFor(model => model.Cat.Age, new { @readonly = "true" })</p>
</li>
<li>
@Html.LabelFor(model => model.Cat.CatColorValue)
<p>@Html.DisplayEnumFor(model => model.Cat.CatColorValue, typeof(Pro.Web.Models.Entities.Enums.CatColor))</p>
</li>
<li>
@Html.LabelFor(model => model.Cat.Description)
<p>@Html.DisplayFor(model => model.Cat.Description, new { @readonly = "true" })</p>
</li>
</ol>
<input type="submit" value="Edit details" name="Command" />
}
モデル:
public class CatDetailsView
{
public Cat Cat { get; set; }
}
コントローラ:
[HttpPost]
public ActionResult Details(CatDetailsView model, string Command)
{
if (Command.Equals("Edit details"))
{
Cat cat = this._catRepository.Find(model.Cat.Id);
if (cat != null)
{
return RedirectToAction("Edit", "Cats", new { id = cat.Id });
}
else
{
return View(model);
}
}
else
{
return View(model);
}
}
問題は、コントローラーがモデルに対して常に null を受け取ることです。私はそのコードを調べていますが、何が問題なのかわかりません。学習を始めたばかりなので、些細なことを見逃している可能性があります。何が問題なのか誰かが考えてくれることを願っています。
ありがとうございました。