3

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

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

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

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

4

1 回答 1

6

Page并且ViewBag是动态的,它们是字典的包装器。

PagePageData是字典的动态包装器。是字典ViewBag的动态包装器。ViewData

当谈到差异时,

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

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

请参阅此处的示例,Page用于在主视图和部分视图之间传递数据。

主文件.cshtml

@{
   Page.Name = "Mark;
}

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

显示名称.cshtml

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

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

于 2012-05-30T13:20:04.203 回答