2011-08-09 29 views
0

我在想什麼更快。我應該將從數據庫查詢的信息存儲到ViewBag中,然後在View中存取並顯示它,或者我應該直接在View中查詢。 控制器是MVC中的中間層,所以對我來說看起來合乎邏輯,在控制器中訪問數據庫應該更快。MVC ViewBag:控制器中ViewBag的數據庫訪問速度快於View中的直接訪問

實施例:

1)在控制器I訪問DB並把信息轉換爲ViewBag這樣我可以在查看顯示它。

控制器:

EVENT e = db.EVENT.Find(id); 
ViewBag.event = e; 

if (e.poster_id != null) 
{ 
    poster = e.DATA.path; 
} 
ViewBag.dict_poster = poster; 

視圖:

<p>POSTER: @ViewBag.dict_poster;</p> 

2)在控制器I只放從DB中的一般數據轉換成ViewBag和訪問它在視圖。

控制器:

EVENT e = db.EVENT.Find(id); 
ViewBag.event = e; 

觀點:

<p> 
    @if(ViewBag.event.poster_id != null) 
    { 
     @ViewBag.event.DATA.path; 
    } 
</p> 
  • 什麼是更好,更適合使用?什麼更快?
  • 如果我有一個非常分支的數據庫,並且我必須將所有內容存儲到「ViewBag.e」中,那麼將單個值存儲到ViewBag中並比在Views中訪問它們還是更快,更快?
  • 什麼是列表? (存儲DB信息到一個列表,把它在一個ViewBag和比視圖訪問它)

我對你的答案,並添加解釋感激....

回答

2

你不應該訪問您的數據層直接來自視圖,這應該在控制器中完成。另外,考慮將強類型視圖模型傳遞給您的視圖,而不是使用ViewBag。

有關在MVC中使用視圖模型的原因,請參閱http://theminimalistdeveloper.com/2010/08/21/why-when-and-how-to-use-typed-views-and-viewmodel-pattern-in-asp-net-mvc/

+0

謝謝。強類型視圖模型對速度有什麼影響,還是僅僅因爲「智能」支持和概述而更好? – Dominik

+0

速度不會有明顯的差異。使用ViewData/ViewBag的問題是阻礙維護的'魔術串'。詳情請參閱鏈接。 – devdigital

+0

再次感謝你:D – Dominik