我正在开发 MVC-4 应用程序。我在 2 个不同的控制器中有 2 个动作,例如:
家长
Public ActionResult Detail(int id)
{
var p = parent.GetById(id);
ViewBag.Child = TempData["Child"];
return View(p);
}
孩子
Public ActionResult Create(Child child)
{
if(ModelState.IsValid)
{
//code save to db
}
TempData["Child"] = child;
return RedirectToAction("Detail", "Parent", new { id = child.ParentId });
}
我有一个父视图和一个部分子视图。子视图在父视图内呈现(子视图包含一个为父视图创建新子视图的表单)。当用户添加新子时,我们将子数据发送到子控制器的创建操作,成功保存后,我们将用户返回到他/她添加子的同一父级。出于这个原因,我们将用户重定向到父控制器的详细操作。如果发生任何验证错误,我们也会重定向到父控制器的详细操作,但这次我们将子对象保存在 TempData 中以保持模型状态错误。
我的父母详细信息视图是:
.....
......
@if (ViewBag.Child == null)
{
Html.RenderPartial("_AddChildPartial", new ViewDataDictionary { { "parentId", Model.Id } });
}
else
{
Html.RenderPartial("_AddChildPartial", ViewBag.Child as xxxx.Models.Child);
}
在这里,我首先检查 viewbag 是否包含子对象,如果是,则将该子对象传递给 _AddChildPartial 视图。显示模型错误和用户填写表单的数据。数据显示成功,但未显示模型错误。
谁能告诉我我在这里做错了什么,为什么模型错误现在显示在 _AddChildPartial View 中?