我已经使用 .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中 对象引用未设置为对象的实例。
我感到困惑的是,因为这是我从开始项目以来一直使用的流程,并且在生产环境中仍然能够正常工作。只有在尝试本地调试时才会出现问题。