为什么 ViewBag 是空的?

Why ViewBag is empty?

在我的 MVC 项目中,我有两个提交的表单,我想重定向到同一个 ThankYou 页面。

在 2 个表单的控制器上,我在 ViewBag 中保存了 ThankYou 页面的文本。

在控制器上,我这样设置 ViewBage:

if (result == "success")
   {
   ViewBag.ThankYouText = "We have received your Contact us request."

   return RedirectToAction("Index", "ThankYou",ViewBag);
   }

在 ThankYou 视图中我明白了:

 <p>ViewBag.ThankYouText</p>

但我的“感谢”页面上总是什么也没有。

我是纯 MVC 的新手,所以我一定做错了什么,知道吗?

您不能将 ViewBag 值从一个控制器传递到另一个控制器。它应该用于将数据从控制器传递到仅查看。

如果你想在控制器之间传递数据,你可以使用 TempData。

如下更改您的控制器:

if (result == "success")
   {
   TempData["ThankYouText"] = "We have received your Contact us request."    
   return RedirectToAction("Index", "ThankYou");
   }

改变你的观点如下:

 <p>@TempData["ThankYouText"]</p>

像这样更改代码

TempData["ThankYouText"] = "We have received your Contact us request.";

return RedirectToAction("Index", "your controller");

在你的索引方法中

public ActionResult Index() 
{ 
     ViewBag.ThankYouText = TempData["ThankYouText"]; return View(); 
}

并在ViewBag.ThankYouText

之前使用@关键字