实例化对象时发生ASP.net NullReferenceException

实例化对象时发生ASP.net NullReferenceException,asp.net,asp.net-mvc-4,nullreferenceexception,Asp.net,Asp.net Mvc 4,Nullreferenceexception,我有一个视图,其中包含一个从ViewData字典中获取的变量。代码看起来像 @{ ParentModel parent = (ParentModel)ViewData["Parent"]; } 我认为可以,因为该对象在ViewData字典中不存在,所以我应该软强制转换它,并在使用它之前检查它是否为null。所以我把它改成了 @{ ParentModel parent = ViewData["Parent"] as ParentModel;

我有一个视图,其中包含一个从ViewData字典中获取的变量。代码看起来像

@{
    ParentModel parent = (ParentModel)ViewData["Parent"];
}
我认为可以,因为该对象在ViewData字典中不存在,所以我应该软强制转换它,并在使用它之前检查它是否为null。所以我把它改成了

@{
    ParentModel parent = ViewData["Parent"] as ParentModel;
}
@{
    ParentModel parent = new ParentModel();
}
但我在这一行仍然得到一个空引用异常。所以为了测试我把它改成了

@{
    ParentModel parent = ViewData["Parent"] as ParentModel;
}
@{
    ParentModel parent = new ParentModel();
}
它仍然抛出一个异常。到底发生了什么,为什么在视图中实例化对象会引发空引用异常

更新 我删除了resharper告诉我的视图顶部未使用的崇敬,下一个使用引用显示了此错误

“没有为扩展cshtml注册的生成提供程序”


我认为ASP.Net有问题,在线查看一些人建议在Web.config中添加一些内容,但我检查了版本控制,但这一点没有改变,如果这一行中出现空引用异常,为什么会发生此问题

@{
    ParentModel parent = ViewData["Parent"] as ParentModel;
 }

那么ViewData本身就是空的。在使用ViewData之前,您必须先实例化它。

结果表明,这是由于显示模板视图中使用的模型本身为空,该模型与从ViewData检索的父对象以及引发异常的行完全不同

我不确定为什么VS会在错误的行上中断,但这可能是因为此代码块是模型声明之后的第一个列表。比如说

@using MyProject.Models
@model ItemModel  <---- VS2010 should break here
@{
    ItemModel parent = ViewData["Parent"] as ItemModel; <-----VS2010 Breaks here
}
<h2>@Model.Title</h2>
@使用MyProject.Models

@model ItemModel您可以显示完整的代码可能在抛出这一行之前的某一行,因为这一行不应该抛出异常您可能有另一个类依赖项(其他类)在您未初始化的ParentModel类中。您可以为您的ParentModel添加代码吗?这并不能解释为什么我在尝试的第三个代码块中也出现空引用异常。它甚至不使用ViewData,MVC应该处理这个问题。构造函数中的代码是什么?它没有显式构造函数,也不继承任何其他类