2017-04-13 37 views
2

我有一個在下面的代碼拋出一個NullReferenceException的MVC觀點:爲什麼MVC在似乎沒有空引用時拋出一個NullReferenceException?

<div class="center-block text-center mb15"> 
    Showing @count of @Model.TotalItemCount results 
</div> 

所以,我希望的是,錯誤是Model爲空。但是,代碼已經通過較早出現在同一視圖以下代碼使它:

@{ 
    long count = Model.Count(); 
} 

通過代碼步進表明count是(在這種情況下)6,和Model.TotalItemCount也是6,所以有不是空引用。

但它仍然拋出異常!

這是一個奇怪的位,這對我來說毫無意義,也是問題的關鍵。當發生異常時,我得到Visual Studio中的以下內容:

enter image description here

這似乎表明正在調試的觀點是不同的視圖顯示在編輯器中,但

  • 我刪除了binobj文件夾和重建應用程序,沒有變化,
  • 這一觀點並未改變了幾個月的,並與其他工作續滾筒行動(這是一個Shared視圖)。

在調試器中的這一行之前逐行瀏覽視圖,每一行都正確突出顯示(通過所有文本的黃色條)。

+0

是否做顯示@@ Model.TotalItemCount的Model.Count()結果也拋出這個錯誤嗎? – Dylan

+2

'TotalItemCount'是一個自動屬性嗎?還是它有一個實現? 「Count」的實現是什麼?我認爲它只是'IEnumerable.Count()',但我想確認。 – Amy

+1

還有一件事,我在過去已經注意到,調試器有時會錯誤地標識引發實際錯誤的Razor文件中的行。你可以與我們分享整個視圖,剔除不相關的HTML嗎? – Amy

回答

1

答案是看起來更寬一些。儘管錯誤被標記爲在Visual Studio中顯示,並且異常表明它是由指定的行號引發的,但異常實際上是由於大約5行後的空引用(中間行全部是HTML),其中屬性被訪問對於實際上爲零的值。

不幸的是Razor視圖調試還沒有實現它應該在這麼長時間後的成熟。感謝所有評論者的意見。

+2

通常這是指有被使用陳舊的文件,通常重新啓動IIS Express和/或VS和/或清潔的解決方案幫助。否則,調試剃刀視圖可以正常工作。 – GSerg

相關問題