我不明白为什么这个列表渲染不起作用,不再抛出一个奇怪的异常:
Microsoft.AspNetCore.Components.WebAssembly.Frendering.WebAssemblyRenderer[100]未处理的异常呈现组件:可为null的对象必须有一个值。System.InvalidOperationException:可为null的对象必须有一个值。在System.Nullable `1[T].get_Value((<0x28f3be8+0x0000a>在:0位于C:\Users\vOId\Desktop\projects<编辑>lt;编辑>\Client\Components\Threads.剃刀:106位于Microsoft.AspNetCore.Components.ComponentBase.<。ctor>b__6_0(Microsoft.AspNetCore.Components.Rendering.RenderTreeBuilder生成器(<0x2d39550+0x001a>在:0位于Microsoft.AspNetCore.Components.Rendering.ComponentState.RenderIntoBatch(Microsoft.AspNetCore.Components.Rendering.RenderBatchBuilder batchBuilder、Microsoft.AspNet Core.Components RenderFragment RenderFragment(<0x2d38ea8+0x00062>在:0位于Microsoft.AspNetCore.Components.RenderTree.Render.RenderInExistingBatch(Microsoft.AspNetCore.Components.Rendering.RenderQueueEntry RenderQueueEntry(<0x2d388a8+0x0004c>在:0位于Microsoft.AspNetCore.Components.RenderTree.Render.ProcessRenderQueue((<0x2d35ce8+0x00098>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>
}
//...
这部分代码没有改变,只是列表的呈现突然抛出了异常,元素不再呈现。
它可能是什么?有人有类似的问题吗?
初始化ViewThreads
对象:
public List<ViewThread> ViewThreads { get; set; } = new List<ViewThread>();
或者将foreach
包裹在if (ViewThreads != null)
:上
if (ViewThreads != null)
{
@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>
}
}
可为null的对象必须有一个值。
您在此处发布的代码不会产生该错误。正如你自己所说;这部分代码没有改变";
所以它在某些方面被...
取代了。查找可为null的属性。
并且";该列表的呈现突然抛出";很可能是由数据引起的。一些专栏在你没想到的地方偷偷带了一个null。