c# - MVC3中的Page和ViewBag动态对象有什么区别?

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

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

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

两者都可以从 View 向上传播到它的布局页面。

我能看到的另一个区别是 ViewBag 可以在 Controller 中使用,而 Page 只能在 View 中使用。还有其他我应该知道的区别吗?

最佳答案

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

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

当谈论差异时,

ViewBag 用于在 Controller 和 View 之间共享数据,甚至我们可以用来在主视图和部分 View 之间共享数据。因此可以从 Controller 和 View 访问 ViewBag。

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

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

Main.cshtml

@{
   Page.Name = "Mark;
}

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

DisplayName.cshtml

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

并不是说我正在使用 RenderPage 来呈现部分 View ,而且部分 View 位于主视图所在的同一目录中。

关于c# - MVC3中的Page和ViewBag动态对象有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10816394/

相关文章:

.net - 从 Spring.NET xml 配置访问 ConfigurationManager.AppSettings 值

c# - 具有对象类型支持的 .Net 第三方 Oracle 提供程序

c# - 数据库中的 Asp.net MVC 页面标题

c# - 使用 where 将 foreach 转换为 LINQ 语句

c# - 是否可以通过容器/包装器在 WPF 表单中托管 WinForm 表单?

javascript - 如何在其操作回调中禁用自定义 DataTables 按钮?

c# - 如何在托管函数中 Hook 非托管函数?

c# MVC - 文件夹结构 - 在哪里放类?

asp.net-mvc - 如何在 asp.net 5 应用程序中添加新的 aspx 页面

c# - 返回 IList<T> 是否比返回 T[] 或 List<T> 更糟糕?