NullReferenceException,如何初始化成员 class Blazor
NullReferenceException, How to initialize member class Blazor
我有一个页面,里面有一个简单的表单,它绑定到我模型的成员 class,我收到以下错误
NullReferenceException: Object reference not set to an instance of an object.
我的页面(如下所示)在我不使用 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 将不再存在。
我有一个页面,里面有一个简单的表单,它绑定到我模型的成员 class,我收到以下错误
NullReferenceException: Object reference not set to an instance of an object.
我的页面(如下所示)在我不使用 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 将不再存在。