【发布时间】:2021-02-01 01:41:33
【问题描述】:
我不明白为什么这个列表渲染不起作用,不再抛出一个奇怪的异常:
Microsoft.AspNetCore.Components.WebAssembly.Rendering.WebAssemblyRenderer[100] 未处理的异常渲染组件:可空对象必须有值。 System.InvalidOperationException:可空对象必须有一个值。 在 System.Nullable`1[T].get_Value () in :0 在 C:\Users\vOId\Desktop\projects
\Client\Components\Threads.razor 中的 .Client.Components.Threads.BuildRenderTree (Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder __builder) [0x010c7]: 106 在 Microsoft.AspNetCore.Components.ComponentBase.<.ctor>b__6_0(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder 构建器) 在:0 在 Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(Microsoft.AspNetCore.Components.Rendering.RenderBatchBuilder batchBuilder,Microsoft.AspNetCore.Components.RenderFragment renderFragment) 在:0 在 Microsoft.AspNetCore.Components.RenderTree.Renderer.RenderInExistingBatch (Microsoft.AspNetCore.Components.Rendering.RenderQueueEntry renderQueueEntry) 在:0 在 Microsoft.AspNetCore.Components.RenderTree.Renderer.ProcessRenderQueue () in :0
列表的初始化是正常的,从服务器获取数据e添加到列表中渲染(ViewThreads):
protected async override Task OnInitializedAsync()
{
var result = await ThreadService.GetThreads();
if (result.IsValid)
ViewThreads.AddRange((List<ViewThread>)result.Data);
//...
}
同时在@foreach的第一条指令的渲染点,异常的第106行,这就是渲染
//...
@foreach (var thread in ViewThreads)
{
<p class="button is-light is-rounded neoFile petite-caps mb-3 @(CurrentThread != null && CurrentThread.Id == thread.Id ? "isSelected" : null)"
@onclick="() => SelectThread(thread)" @key="thread">
@thread.Title
</p>
}
//...
这部分代码没有改变,只是列表的呈现突然抛出了该异常并且元素不再呈现。
可能是什么? 有没有人遇到过类似的问题?
【问题讨论】:
-
贴出 ViewThread 类以及所有使用它的地方。对其他任何地方的可空属性或变量要非常明确。
-
我在渲染部分中我能想到的每个配置都尝试了 null。我无法得到同样的错误。
标签: c# razor blazor blazor-webassembly