MVC从另一个控制器传递ViewBag值

Sui*_*eep 10 asp.net-mvc viewbag asp.net-mvc-4

我已经Viewbag.message在我的默认HomeController中设置了一个值,并成功地将其显示在我的Shared/_Layout.cshtml.

之后我添加了另一个TestController,在TestController视图中,Viewbag.message似乎是null.我可以知道它有什么问题.

如果我错了,请纠正我,因为我的理解Viewbag.Message应该来自各地?

Rav*_*dag 29

ViewBag是一个动态属性,它利用了C#4.0中的新动态功能.基本上它是ViewData的包装器,也用于将数据从控制器传递到相应的视图.

  • 它的生命也只在当前的要求中存在.如果发生重定向,则它的值变为空.
  • 它不需要对复杂数据类型进行类型转换.

下面是一个汇总表,显示了不同的持久性机制. ViewBag和其他机制的总结 信用:CodeProjectArticle

  • 使用`TempData.Keep`将维护从View到Controller和Controller到View的数据. (4认同)

小智 6

[HttpPost]
public ActionResult Index()
{
    TempData["Message"] = "Success";
    return RedirectToAction("Index");
}


public ActionResult Index()
{
    ViewBag.Message=TempData["Message"];
    return View();
}
Run Code Online (Sandbox Code Playgroud)