在ASP.NET MVC 3中,ViewData和PageData有什么区别?

14

我看到了这2个属性,但是我不明白它们之间的区别?
我似乎找不到有关PageData属性的任何帮助。
所以有人能帮忙吗?

@
{
 Viewdata["something"] = 1;
 PageData["something"] = 2;
}

谢谢


2
嗨,Karim,也许你的代码片段中有“ViewPage”,但在你的问题中却是“PageData”。 - dizzwave
3个回答

14

PageData是Razor构建在WebPages上的属性

[IT] 提供类似于数组的方式,用于在页面、布局页和部分页之间共享页面数据。

http://msdn.microsoft.com/zh-cn/library/system.web.webpages.webpagebase.pagedata(v=VS.99).aspx

ViewData是ViewPage的一个属性,并提供了一种在控制器和页面之间传递数据的方法。

获取或设置包含要在控制器和视图之间传递的数据的字典。

http://msdn.microsoft.com/zh-cn/library/system.web.mvc.viewpage.viewdata.aspx

ViewData可以通过控制器进行访问,而PageData则不行。


谢谢,但这个问题非常令人困惑,你是否知道这两个属性中的任何一个与HttpContext.Current.Items[]有关系?在使用ASP.NET MVC之前,我在Web Forms中使用它,但它让我想起了这两个属性。 - Karim

2
我不是百分之百确定,但看起来PageData是WebMatrix(微软的“轻量级”Web开发环境)的一部分。而ViewData是MVC完全支持的内容。ViewData在System.Web.Mvc命名空间中,因此任何MVC应用程序都将可用。
PageData显然(根据MSDN)在System.Web.WebPages命名空间中,但即使我完全限定它,也无法从我的MVC控制器中访问PageData。也许它不像ViewData那样可以从控制器端访问...?
这个StackOverflow问题中有关于PageData的更多信息,请点击这里查看,但围绕它的资料出奇地稀少(正如你可能已经发现的一样)。
希望这有所帮助!

-2

ViewData 是 ViewPage 类中的属性,它们都在 ViewPage 类中。


抱歉,我在示例中犯了一个错误,它应该是Pagedata而不是ViewPage。 - Karim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接