首页 文章

ASP.NET MVC ViewBag还是TempData?

提问于
浏览
1

我在视图中有一个表单,我通过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
    RedirectToAction("P", new { id = editor.ID ,check = true});
    

    和P动作就像

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

    如果你通过check = true,你将在检查P动作时得到真实,如果你没有传递任何东西,那么不要将它的值设置为false . 所以如果这个方法是从多个位置调用而你没有通过check参数那么就不会抛出错误...

  • 1

    这就是 Model 来的地方 . 您可以使用模型对象从控制器向View发送属性值 . 在您查看中使用 HTML Helpers 将此 model 属性与您想要的元素绑定在一起 . 在后期操作中,创建此模型对象的参数 . 从视图中回发模型时,它将填充属性 .

相关问题