0
有很多關於此問題的帖子,但我仍然找不到正確的解決方案。目前我的模型,視圖和控制器是這樣的:POST操作後複雜模型爲空
查看:
@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);
}
}
問題是控制器總是收到模型的空值。我正在查看該代碼,看不到有什麼問題。我剛開始學習,所以我可能錯過了一些微不足道的東西。我希望有人有一個想法可能是一個問題。
謝謝。
總結:如果您想顯示值使用HiddenFor與DisplayFor – 2013-04-30 15:22:14
謝謝。這工作!我把'HiddenFor'放在需要值的地方,現在我可以在控制器中獲得這些值。 – Cristiano 2013-04-30 16:36:41