View如何访问Controller存储的ViewBag数据?

时间:2016-03-31 01:55:08

标签: asp.net-mvc view controller viewbag

我是ASP.NET MVC的新手。刚开始学习。我跟随的所有教程,文章或书籍都说"您可以使用ViewBag将数据从Controller发送到View ..."

来自控制器 -

public ActionResult Index()
{
    ViewBag.Message = "Index Message";
    return View();
}

到视图 -

<h3>@ViewBag.Message</h3>

但是,无人问津的解释,以及我很难理解的是View如何(或可以)访问从Controller发送的ViewBag数据?

我所知道的,

  1. 引擎盖ViewBag的类型为ViewDataDictionary
  2. Controller中的ViewBag来自ControllerBase
  3. 的ViewBag属性
  4. View中的ViewBag来自WebViewPage
  5. 的ViewBag属性

    根据我的理解,

    • 如果View要访问Controller存储的该词典中的数据,则Controller和View必须具有该词典对象的相同实例。

    所以我不明白,

    • View究竟如何访问Controller存储的ViewBag数据?

1 个答案:

答案 0 :(得分:1)

查看Controller类的源代码。

你会看到:

protected internal virtual ViewResult View(string viewName, string masterName, object model)

当您致电return View()时,会发出什么声音。该方法创建一个ActionResult并从控制器传递ViewData。所以,是的,它们都共享相同的字典对象实例。