动态对象Page
可以在System.Web.WebPages.WebPageBase
中找到,WebViewPage
继承自抽象类。
动态对象 ViewBag
可以在 System.Web.Mvc.WebViewPage
中找到。
两者都可以从 View 向上传播到它的布局页面。
我能看到的另一个区别是 ViewBag
可以在 Controller 中使用,而 Page
只能在 View 中使用。还有其他我应该知道的区别吗?
最佳答案
Page
和 ViewBag
是动态的,它们是字典的包装器。
Page
是 PageData
字典的动态包装器。 ViewBag
是 ViewData
字典的动态包装器。
当谈论差异时,
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/