【发布时间】:2021-05-24 15:13:18
【问题描述】:
我有 2 个模型。
public class LS : BaseDomainModel
{
[Required]
public string LsCompanyName { get; set; }
}
和
public class LSName : BaseDomainModel
{
[Required]
public string SurveyorName { get; set; }
[Required]
public int LSId { get; set; }
public virtual LS LS { get; set; }
}
在我的剃须刀页面中,我尝试查看数据:
@if (LsnModel == null)
{
<div class="alert alert-info">Loading list..</div>
}
else
{
@foreach (var Item in LsnModel)
{
<div>@Item.SurveyorName @Item.LS.LsCompanyName </br></div>
}
}
@code
{
private List<LSName> LsnModel;
protected async override Task OnInitializedAsync()
{
LsnModel = await _client.GetFromJsonAsync<List<LSName>>("api/lsnames");
}
}
如果我从 razor 代码中删除 @Item.LS.LsCompanyName,它运行良好。否则,这个错误就出来了..
crit: Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100]
Unhandled exception rendering component: Object reference not set to an instance of an object.
System.NullReferenceException: Object reference not set to an instance of an object.
at WebApp.Client.Pages.LSName.Index.BuildRenderTree(RenderTreeBuilder __builder)
at Microsoft.AspNetCore.Components.ComponentBase.<.ctor>b__6_0(RenderTreeBuilder builder)
at Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(RenderBatchBuilder batchBuilder,
RenderFragment renderFragment) at Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch
(RenderQueueEntry renderQueueEntry) at Microsoft.AspNetCore.Components.RenderTree.Renderer
.ProcessRenderQueue()
两个模型中都有数据,LSName.LSId = LS.Id
BaseDomainModel:
public abstract class BaseDomainModel
{
[Key]
public int Id { get; set; }
public string CreatedBy { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<DateTime> CreatedDate { get; set; }
public string UpdatedBy { get; set; }
[DataType(DataType.Date)]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
public Nullable<DateTime> UpdatedDate { get; set; }
}
我应该在哪里检查是什么原因造成的?
【问题讨论】:
-
Item.LS为空。你确定你也在拉所有相关的记录吗? -
使用
@Item.LS.LsCompanyName??"No Company Name",这样就可以看到LsCompanyName的所有值为null的人 -
@Item.LS?.LsCompanyName ?? ""将停止崩溃。您的 LS 财产是null。 -
我在控制器中发现了问题。我没有在我的 LSName Get 方法中声明 LS 模型。 var includes = new List
{ "LS" }; var lsname = await _unitOfWork.LSNames.GetAll(包括:包括); .谢谢大家。
标签: c# api asp.net-core blazor