我有一个 MVC View 在以下代码中抛出 NullReferenceException:
<div class="center-block text-center mb15">
Showing @count of @Model.TotalItemCount results
</div>
因此,我认为错误是 Model
为空。但是,代码已经通过在同一 View 中较早出现的以下代码完成:
@{
long count = Model.Count();
}
单步执行代码显示 count
是(在本例中)6,Model.TotalItemCount
也是 6,因此没有空引用。
但它仍然抛出异常!
这是奇怪的一点,这对我来说毫无意义,但却是问题的症结所在。抛出异常时,我在 Visual Studio 中得到以下信息:
这似乎表明正在调试的 View 与编辑器中显示的 View 不同,但是
- 我删除了
bin
和obj
文件夹并重建了应用程序,没有任何变化,并且 - 此 View 已经几个月没有更改,并且可以与其他 Controller 操作一起使用(它是一个
Shared
View )。
在调试器中单步执行此行之前的 View ,每一行都正确突出显示(黄色条贯穿所有文本)。
最佳答案
答案是看起来更宽一点。虽然错误被标记为 Visual Studio 中所示,并且异常表明它是由指示的行号抛出的,但该异常实际上是由于大约 5 行之后的空引用(中间的行都是 HTML),其中访问了一个属性对于一个实际上为 null 的值。
不幸的是,经过这么长时间,Razor View 调试还没有达到应有的成熟度。感谢所有评论者的意见。
关于c# - 为什么 MVC 会在看似没有 Null Reference 的情况下抛出 NullReferenceException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43400557/