当似乎没有 Null Reference 时,为什么 MVC 会抛出 NullReferenceException?

Dar*_*ter 4 c# asp.net-mvc asp.net-mvc-4

我有一个 MVC 视图,它在以下代码中抛出 NullReferenceException:

<div class="center-block text-center mb15">
    Showing @count of @Model.TotalItemCount results
</div>
Run Code Online (Sandbox Code Playgroud)

所以,我希望错误Model是空的。但是,该代码已经通过以下代码完成,该代码之前出现在同一视图中:

@{
    long count = Model.Count();
}
Run Code Online (Sandbox Code Playgroud)

单步执行代码显示count(在本例中)为 6,并且Model.TotalItemCount也是 6,因此没有空引用。

但它仍然抛出异常!

这是奇怪的一点,这对我来说毫无意义,并且是问题的关键。当抛出异常时,我在 Visual Studio 中得到以下信息:

在此处输入图片说明

这似乎表明正在调试的视图与编辑器中显示的视图不同,但是

  • 我删除了binobj文件夹并重建了应用程序,没有任何变化,并且
  • 这个视图已经几个月没有改变了,并且可以与其他控制器操作一起使用(它是一个Shared视图)。

在调试器中逐行浏览此行之前的视图,每一行都被正确突出显示(黄色条穿过所有文本)。

Dar*_*ter 6

答案是看起来更宽一些。虽然错误被标记为Visual Studio中所示,并且异常表明它是由指示的行号抛出的,但异常实际上是由于在大约5行之后(中间的行都是HTML)访问了一个属性的空引用对于实际上为 null 的值。

不幸的是,经过这么长时间,Razor 视图调试还没有达到它应有的成熟度。感谢所有评论者的投入。

  • 通常这意味着正在使用陈旧的文件,通常重新启动 IIS Express 和/或 VS 和/或清理解决方案会有所帮助。否则调试剃刀视图工作正常。 (2认同)