2010-09-15 43 views
0

在標準的ASP.NET webforms項目中,如果我在頁面上有多個用戶控件需要相同的數據,我傾向於將第一個用戶控件HttpContext.Current.Items集合中的數據,因此它可用於所有其他數據。爲ASP.NET MVC控制器共享「每個請求」存儲

對於在同一頁面上多次使用的MVC控制器上的ViewResult,最接近的等價物是什麼?

感謝

編輯:

基本上ViewReults這裏是出現不止一次在頁面上的內容範疇,所以我一直在尋找查詢數據庫,一旦獲得的所有內容集合(當第一個內容區域被覆蓋時)而不是針對每個內容區域的單獨查詢。認爲它會加快速度。

進一步信息:

只是要清楚,內容控制器的動作被重複使用從由一個額外的「主」控制器所服務的網頁內的「的RenderAction」。因此,我不認爲我可以使用ViewData(或控制器類本身的任何其他屬性),因爲它不在同一控制器的不同實例之間共享。

我想我必須全部使用諸如this one之類的方法來回退HttpContext。

+0

在ViewResults上做一下詳細介紹,以及你在做什麼? – 2010-09-15 13:56:41

+0

補充信息,希望有道理.. – Nick 2010-09-15 14:45:55

+0

它是什麼樣的數據?它是否對用戶有用? ist安全性是否相關? – 2015-03-13 12:21:20

回答

1

「在同一頁上多次」意味着相同的請求,意味着您仍然可以使用HttpContext.Current.Items集合。

+1

想是這樣,但我想直接訪問的HttpContext從控制器不建議用,因爲它使單元測試更難? – Nick 2010-09-15 14:39:56

+0

猜猜我走上這條道,這就是我想要去了解它,現在如果又上來 – Nick 2015-03-13 13:51:22

0

爲什麼你不把這個內容放到你的ViewModel中並讓所有的控件都使用它?這是View模型的一個非常標準的用法。

+0

是的方式,但內容領域(由內容控制器服務)可以在網站上的任何地方出現,所以我不得不把內容集合在一個基礎模型本身是由許多不同的控制器,否則有不同的模型要求的服務的頁面。 – Nick 2010-09-15 16:58:08

+0

這聽起來像是計算機[「SomeSharedKey」]的適當使用。那麼你不需要基礎視圖模型。 – Ryan 2010-09-15 19:41:38

相關問題