问题描述
我的页面中有一个简单的表单,该页面绑定到模型的成员类,出现以下错误
NullReferenceException:对象引用未设置为对象的实例。
我的页面(如下所示)可以正常工作,如果我不使用Timelineinfos
,但是当我引用它时,我得到了错误。所以我的问题是:我应该如何初始化Timelineinfos
?
<div class="row">
<div class="col-7">
<EditForm Model="test">
<InputText @bind-Value="test.Timelineinfos.City"></InputText>
</EditForm>
</div>
</div>
@code {
public testmodel test = new testmodel();
public class testmodel
{
public string Name { get; set; }
public Timelineinfo Timelineinfos { get; set; }
};
}
解决方法
发生异常的原因是,我们尚未初始化Timelineinfos
的值,将其保留为null
,然后尝试通过绑定test.Timelineinfos.City
来访问其成员。因为没有Timelineinfos
的实例,所以等于null.City
,这毫无意义。
您可以通过多种方式初始化该值。
使用对象初始化程序通过构造函数:
public testmodel test = new testmodel() { Timelineinfos = new Timelineinfo() };
...是以下内容的语法糖:
testmodel test = new testmodel();
test.Timelineinfos = new Timelineinfo();
通过为属性实现默认值:
public Timelineinfo Timelineinfos { get; set; } = new Timelineinfos();
...本质上与在默认(无参数)构造函数中设置它们相同:
public testmodel()
{
this.Timelineinfos = new Timelineinfos();
}
无论如何,一旦有了实例,您的NullReferenceException就不会再出现了。