Ser*_*nko 2 asp.net-core blazor asp.net-core-3.0
我有一个简单的应用程序,但它在页面初始化时停止工作并出现错误
NullReferenceException:未将对象引用设置为对象的实例。Site.Shared.MainLayout.BuildRenderTree(RenderTreeBuilder __builder) 错误: 在此处输入图像描述
但代码中并没有什么复杂的地方。应用程序剃须刀:
<Router AppAssembly="@typeof(Program).Assembly">
<Found Context="routeData">
<RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
</Found>
<NotFound>
<LayoutView Layout="@typeof(MainLayout)">
<p>Sorry, there's nothing at this address.</p>
</LayoutView>
</NotFound>
Run Code Online (Sandbox Code Playgroud)
_Host.cshtml: 在此输入图像描述
MainLayout.razor: 在此处输入图像描述
StartUpService.cs: 在此处输入图像描述
page.GetPageGlobalAsync() 运行良好,我可以在调试模式下传递此方法。 在此输入图像描述
但是在我出现这个错误之后。并且不知道原因是什么以及如何获得有关问题所在的更多信息。
UPD
如果我将代码更改为:
PageGlobal page = new PageGlobal()
Run Code Online (Sandbox Code Playgroud)
它开始工作,但 OnInitializedAsync 是异步方法,为什么我不能在 OnInitializedAsync 方法中使用异步等待方法?
Ger*_*rit 10
@pageGlobal.Title您的页面在从异步方法获取它之前就正在尝试渲染。这就是为什么如果你这样做pageGlobal = new PageGlobal();它就不会崩溃。
改成这样:
<div class="top-row h3">
@if(pageGlobal != null)
{
pageGlobal.Title
}
</div>
Run Code Online (Sandbox Code Playgroud)
或者,如果您想要单衬:
<div class="top-row h3">
@pageGlobal?.Title
</div>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5169 次 |
| 最近记录: |