2012-05-30 58 views
3

動態對象Page可在System.Web.WebPages.WebPageBase中找到,它是繼承自WebViewPage的抽象類。MVC3中的Page和ViewBag動態對象有什麼區別?

可在System.Web.Mvc.WebViewPage中找到動態對象ViewBag

兩者都可以從視圖傳播到佈局頁面。

我能看到的另一個區別是ViewBag可以在控制器中使用,而Page只在視圖中可用。我應該瞭解其他的區別嗎?

+0

http://stackoverflow.com/questions/6429079/what-is-the-difference-between-viewdata-pagedata-in-asp-net-mvc-3 – VJAI

回答

6

PageViewBag是動態的,它們是字典的包裝。

PagePageData字典的動態包裝。 ViewBag是圍繞ViewData字典的動態封裝。

當談論的差異,

ViewBag用於共享控制器和視圖甚至我們可以使用到一個主視圖和局部視圖之間共享數據之間的數據。所以可以從控制器和視圖訪問ViewBag。

Page是一個有點不同的東西,它不能從控制器訪問,它被用來在主頁面和部分頁面之間傳遞數據。

查看使用Page在主視圖和局部視圖之間傳遞數據的示例。

Main.cshtml

@{ 
    Page.Name = "Mark; 
} 

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

DisplayName.cshtml

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

不,我使用的RenderPage呈現局部視圖也局部視圖位於同一主視圖所在的目錄。

+0

它可能有助於指出'ViewBag'是* * WebViewPage和'ControllerBase'的屬性,並且來自其中的數據被複制到另一箇中。 –

+0

@MichaelEdenfield您能否詳細說明您的評論。如何將其複製到其他論壇。 – Abi

相關問題