【问题标题】:How exactly does a View access ViewBag data stored by a Controller?View 究竟如何访问 Controller 存储的 ViewBag 数据?
【发布时间】:2016-03-31 01:55:08
【问题描述】:

我是 ASP.NET MVC 的新手。刚开始学习。我关注的所有教程、文章或书籍都说“你可以使用 ViewBag 将数据从控制器发送到视图......”

来自控制器 -

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

到视图 -

<h3>@ViewBag.Message</h3>

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

我知道的,

  1. ViewBag 的类型是 ViewDataDictionary
  2. Controller 中的 ViewBag 来自 ControllerBase 类的 ViewBag 属性
  3. View 中的 ViewBag 来自 WebViewPage 类的 ViewBag 属性

据我了解,

  • 如果视图要访问控制器存储的字典中的数据,则控制器和视图必须具有该字典对象的相同实例。

所以我不明白,

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

【问题讨论】:

    标签: asp.net-mvc view controller viewbag


    【解决方案1】:

    查看Controller 类的源代码。

    你会看到:

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

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

    【讨论】:

      猜你喜欢
      • 2022-01-22
      • 1970-01-01
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 2013-12-30
      • 1970-01-01
      • 1970-01-01
      • 2015-06-19
      相关资源
      最近更新 更多