ASP.NET MVC ViewBag还是TempData?

时间:2015-10-20 07:00:32

标签: asp.net asp.net-mvc

我在视图中有一个表单,我通过Submit按钮将一些信息传递给Controller。在控制器中,在一个名为SaveP的ActionResult中,我想验证一些条件,并将这些验证的结果传递回视图,以便在按下提交按钮后重新加载页面时显示一些内容。

代码是这样的:

 if (!(editor.ID != null && !string.IsNullOrEmpty(editor.Number) && (!ext.SID.HasValue)))
                {
                    _db.M.DeleteM(editor.PID);
                    pa.P.MID = null;
                    TempData["m"] = false; 

我希望视图仅在这些条件适用时显示一些内容。 此外,此操作结果称为SaveP重定向以返回RedirectToAction("P", new { id = editor.ID });

我使用了ViewBag并且它没有工作,但后来我发现ViewBag元素在重定向后不会保留。然后,我尝试使用TempData,但在视图中它为null。我该怎么解决这个问题?谢谢!

2 个答案:

答案 0 :(得分:1)

RedirectToAction("P", new { id = editor.ID ,check = true});
  

和P动作就像

public ActionResult P(int id,bool check=false)
{ 
  viewBag.check = check;
}
  

如果你通过check = true,你将在检查P动作时得到真实   如果你没有传递任何东西,那么它的价值将不会被设置为假。   因此,如果从多个位置调用此方法并且您没有通过检查参数,则不会抛出错误...

答案 1 :(得分:0)

Model来的地方。 您可以使用模型对象从控制器向View 发送属性中的值。在您使用 HTML帮助程序的视图中,将此model属性与您想要的元素绑定在一起。在您的帖子操作中,创建此模型对象的参数。当模型从视图中回发时,它将被填充属性。

相关问题