【问题标题】:What is the difference between the Page and ViewBag dynamic objects in MVC3?MVC3 中的 Page 和 ViewBag 动态对象有什么区别?
【发布时间】:2012-05-30 12:33:39
【问题描述】:

动态对象Page 可以在System.Web.WebPages.WebPageBase 中找到,WebViewPage 继承自抽象类。

动态对象ViewBag可以在System.Web.Mvc.WebViewPage中找到。

两者都可以从视图向上传播到其布局页面。

我可以看到的另一个区别是ViewBag 可以在控制器中使用,而Page 只能在视图中使用。还有其他我应该知道的差异吗?

【问题讨论】:

标签: c# .net asp.net-mvc asp.net-mvc-3


【解决方案1】:

PageViewBag 是动态的,它们是字典的包装器。

PagePageData 字典的动态包装器。 ViewBagViewData 字典的动态包装器。

谈到差异时,

ViewBag 用于在控制器和视图之间共享数据,甚至我们可以使用在主视图和部分视图之间共享数据。因此 ViewBag 可以从控制器和视图中访问。

Page 有点不同,它不能从控制器访问,它用于在主页面和部分页面之间传递数据。

在此处查看使用Page 在主视图和部分视图之间传递数据的示例。

Main.cshtml

@{
   Page.Name = "Mark;
}

@RenderPage("DisplayName.cshtml"); // partial view

DisplayName.cshtml

<p>
Name: @Page.Name
</p>

不是我使用RenderPage 来渲染局部视图,局部视图也位于主视图所在的同一目录中。

【讨论】:

  • 指出ViewBagWebViewPageWebViewPageControllerBase 的属性可能会有所帮助,并且其中一个的数据会复制到另一个。跨度>
  • @MichaelEdenfield 你能详细说明你的评论吗?它是如何被复制到其他地方的。
猜你喜欢
  • 2011-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 2011-09-23
  • 2013-06-26
  • 2011-07-31
相关资源
最近更新 更多