Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么不';MVC中部分视图中显示的t模型错误?_C#_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

C# 为什么不';MVC中部分视图中显示的t模型错误?

C# 为什么不';MVC中部分视图中显示的t模型错误?,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我正在开发MVC-4应用程序。我在两个不同的控制器中有两个动作,如: 母公司 孩子 我有一个父视图和一个部分子视图。子视图在父视图内呈现(子视图包含一个窗体,用于为父视图创建新的子视图)。当用户添加新的子节点时,我们将子节点数据发送到子节点控制器的创建操作,成功保存后,我们将用户返回到他/她添加子节点的同一父节点。因此,我们将用户重定向到父控制器的详细操作。如果发生任何验证错误,我们也会重定向到父控制器的详细操作,但这次我们将子对象保存在TempData中以保留modelstate错误 我的父详

我正在开发MVC-4应用程序。我在两个不同的控制器中有两个动作,如:

母公司

孩子

我有一个父视图和一个部分子视图。子视图在父视图内呈现(子视图包含一个窗体,用于为父视图创建新的子视图)。当用户添加新的子节点时,我们将子节点数据发送到子节点控制器的创建操作,成功保存后,我们将用户返回到他/她添加子节点的同一父节点。因此,我们将用户重定向到父控制器的详细操作。如果发生任何验证错误,我们也会重定向到父控制器的详细操作,但这次我们将子对象保存在TempData中以保留modelstate错误

我的父详细视图是:

在这里,我首先检查viewbag是否包含子对象(如果是),然后将该子对象传递给_addChildPartialView。以显示模型错误和用户在表单中填写的数据。数据显示成功,但模型错误未显示

谁能告诉我我做错了什么,为什么模型错误现在显示在部分视图中

TempData["Child"] = child;
您没有存储完整的模型状态(即验证错误信息)。
您只存储您的
子对象的
POST值

阅读Kazi Manzur Rashid的博客文章。
这会很容易解决你的问题

Public ActionResult Create(Child child)
{
  if(ModelState.IsValid)
  {
   //code save to db
  }
  TempData["Child"] = child;
  return RedirectToAction("Detail", "Parent", new { id = child.ParentId });
}
.....
......

@if (ViewBag.Child == null)
{
    Html.RenderPartial("_AddChildPartial", new ViewDataDictionary { { "parentId", Model.Id } });
}
else
{
    Html.RenderPartial("_AddChildPartial", ViewBag.Child as xxxx.Models.Child);
}
TempData["Child"] = child;