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

smd*_*ger 3 .net c# asp.net-mvc asp.net-mvc-3

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

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

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

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

VJA*_*JAI 6

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

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

谈论差异时,

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

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

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

Main.cshtml

@{
   Page.Name = "Mark;
}

@RenderPage("DisplayName.cshtml"); // partial view
Run Code Online (Sandbox Code Playgroud)

DisplayName.cshtml

<p>
Name: @Page.Name
</p>
Run Code Online (Sandbox Code Playgroud)

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