2010-06-04 947 views
2

我最近開始使用asp.net mvc,並且遇到了一個問題。 我有一個呈現一些ascx頁面的aspx頁面。我想要做的是在aspx頁面聲明一個全局變量,以便它的所有孩子都可以看到它。我試過<% var i = 0; %>,但它在子頁面上不可見。如何在ASP.NET MVC中聲明一個全局變量頁面

我該怎麼辦?

回答

4

變量不與局部視圖共享。 視圖只是一段數據的表示。您必須將數據作爲模型傳遞給要渲染的每個視圖,無論它是普通視圖還是部分視圖。

<% Html.RenderPartial("ViewName", Model, ViewDataDictionnary) %> 

如果你想給一個變量傳遞給局部視圖,我會強烈建議您將此參數添加到局部視圖的模型,而這要通過ViewDataDictionnary另外通過。

+0

這是否適用於從共享視圖繼承的兩個視圖?如果我要在共享視圖中聲明和使用變量,我是否可以在繼承視圖中重寫它以更改輸出? – yoozer8 2011-08-11 11:28:02

+0

我不確定要理解與此問題有關的情況,但該視圖只是一個呈現html的類。但是這個變量仍然不會在對RenderPartial的不同調用中共享,因爲這會創建不同的局部視圖實例。 – 2011-08-11 13:14:35

0

你可以把它添加到的ViewData然後傳遞的ViewData到ASCX與

<% Html.RenderPartial("ViewName", Model, ViewData) %> 

看到msdn on RenderPartial

因此,在你的aspx頁面你會做這樣的事情

<% ViewData["i"] = 0; %> 

而在你的用戶控件中,你只需要回顧一下並按照你的需要使用它

<% int i = (int)ViewData["i"] %> 

另一種方法是使用RenderAction eand將它作爲參數傳遞......所以我們需要知道如何顯示您的ascx。

看到從aspx頁msdn on RenderAction