2

我寫在我的CSHTML文件下面的語句: -爲什麼懶加載在剃刀視圖(cshtml文件)中不起作用?

@{ 
string categoryName = string.Format("{0}->{1}", label.Category.Parent.Name, 
label.Category.Name); 
@categoryName 
} 

,並得到一個異常Object reference null

另一方面,同樣在Controller.cs文件和立即窗口中工作。我知道它與延遲加載有關。

背後有沒有任何概念,它不適用於Cshtml文件中的表達式?

謝謝

回答

5

這是行不通的,因爲您的上下文在您的代碼執行時處置。所有數據都應該加載到您的視圖中,以便關閉延遲加載並使用預先加載。在結果上調用.Single()來強制加載和使用:從context.Labels.Include中的o中獲取(o => o.Parent),例如當時強制加載。您還可以將這些結果平鋪到控制器中的視圖模型中。

+0

但是,當我們將斷點放入cshtml文件中,然後在即時窗口中執行此操作時,我們會得到結果。此時,控制器也執行完畢。爲什麼我們在這裏得到結果呢? – teenup 2012-02-25 08:36:26

+2

不知道是否處於調試模式在這裏與對象生命週期有所不同我不會想象它 - 但我知道這是MVC開始時的問題之一:)加載所有數據並將其傳遞給視圖。這是一條應該始終遵循的規則,無論其他事情是否有效。控制器作業是編排所有數據以將其交給視圖。 – 2012-02-25 16:45:24