ASP.NET MVC辅助方法抛出空引用异常

6

我已经使用 .NET Framework ASP.NET MVC 工作了约9个月的时间。我有一个视图,其中包含许多表单,每个表单都有自己的模型。我使用 ViewModel 包含我用于表单的所有个别模型。我使用 Html Helpers 在表单中创建输入框,例如下面所示的 TextBoxFor 和 TextAreaFor。

@Html.TextAreaFor(d => d.Foo.Property, new { @class = "form-control" })

自从几个月前开始项目以来,这项工作一直在正常运行,并且在生产环境中仍然有效。然而,从昨天开始,在本地运行时已停止工作。加载页面时,我的每个帮助器输入都会引发空引用异常。我尝试使用早期版本的项目,它仍然引发相同的异常。我一直无法找到在线上有相同问题的人,我不知道如何解决这个问题。我目前唯一的想法是重新安装Visual Studio,但我不想这样做。

编辑: 为了澄清我的问题,我在下面包含了我使用的流程。这些来自我创建的一个虚拟项目,所以我的问题不是特定于任何项目的。 这是我想要将值作为表单的一部分输入的类。

public class Foo
{
    public int TestProp1 { get; set; }
    public string TestProp2 { get; set; }
}

我在一个页面上有许多表单,因此我必须使用ViewModel来包含每个模型。

public class IndexViewModel
{
    public Foo Foo { get; set; }
    public Bar Bar { get; set; }
}

使用HTML助手,我创建输入框以便在表单提交时绑定到模型。
@model TestMvc2.Models.IndexViewModel

@{
    ViewBag.Title = "Home Page";
}

<div class="row">
    @using (Html.BeginForm("PostForm", "Home", FormMethod.Post))
    {
        <div class="form-group">
            @Html.Label("Foo Test Prop 1")
            @Html.TextBoxFor(c => c.Foo.TestProp1)
        </div>
        <div class="form-group">
            @Html.Label("Foo Test Prop 2")
            @Html.TextBoxFor(c => c.Foo.TestProp2)
        </div>
    }
</div>

页面加载时,我发现在TextBoxFor扩展中出现了以下异常:
异常:'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException',位于Microsoft.CSharp.dll中
异常:'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException',位于Microsoft.CSharp.dll中
异常:'System.NullReferenceException',位于System.Web.Mvc.dll中 对象引用未设置为对象的实例。
我感到困惑的是,因为这是我从开始项目以来一直使用的流程,并且在生产环境中仍然能够正常工作。只有在尝试本地调试时才会出现问题。

你是这个项目唯一的工作人员吗?可能会有一个模型的变化没有经过彻底的审查。 - Jerdine Sabio
我是唯一在这个项目上工作的人,我在一个虚拟项目中也遇到了这个问题,所以它不是特定于项目的。我已经进行了编辑,希望能够澄清我的问题。 - ilang898
我找不到我要找的那个——你能把创建视图模型并显示视图的控制器动作包含进去吗?谢谢。 - Jerdine Sabio
所以我进行了更多的测试,似乎这是调试器的问题。如果我不使用调试运行,则可以完美运行。现在我不确定从哪里开始解决这个问题。当通过Html Helper方法时抛出异常,因此我的倾向是可能存在某个损坏的dll,但我对dll不熟悉。 - ilang898
2个回答

4

我曾经遇到过同样的问题,我重新安装了Visual Studio并且问题得到了解决。


这对我也有用,但它的副作用是删除了我所应用的所有设置和窗口布局。非常恼人。 - Ian

2
我遇到的解决方案是,在重启电脑后激活"Just My Code"选项:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接