动态对象Page
可以在System.Web.WebPages.WebPageBase
中找到,WebViewPage
是ViewBag
继承的抽象类。
可以在System.Web.Mvc.WebViewPage
中找到动态对象ViewBag
。
两者都可以从视图传播到它的布局页面。
我可以看到的另一个区别是Page
可以在Controller中使用,而{{1}}仅在视图中可用。我还应该知道其他任何不同之处吗?
答案 0 :(得分:6)
Page
和ViewBag
是动态的,它们是字典的包装。
Page
是PageData
字典的动态包装器。 ViewBag
是ViewData
字典的动态包装。
谈论差异时,
ViewBag
用于在控制器和视图之间共享数据,甚至可以用来在主视图和部分视图之间共享数据。因此,可以从控制器和视图访问ViewBag。
Page
有点不同,它无法从控制器访问,它用于在主页和部分页面之间传递数据。
请参阅此处使用Page
在主视图和部分视图之间传递数据的示例。
<强> Main.cshtml 强>
@{
Page.Name = "Mark;
}
@RenderPage("DisplayName.cshtml"); // partial view
<强> DisplayName.cshtml 强>
<p>
Name: @Page.Name
</p>
不是我使用RenderPage
渲染局部视图,部分视图也位于主视图所在的同一目录中。