You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2022/.NET6环境下WASM Blazor嵌套组件传参内部对象为空报错

问题原因

  • 核心问题1:tester.razor中未初始化outerClass实例,或是初始化OuterClass时未同步初始化其内部的InnerClass属性,导致传递给子组件的对象为null
  • 核心问题2:Blazor组件的[Parameter]参数默认值仅在父组件未显式传递该参数时生效,只要父组件传了参数(哪怕传的是null),都会覆盖子组件内设置的默认值。你在OuterComponent、InnerComponent中给参数设置的默认初始化逻辑完全没有生效,被父组件传递的null值覆盖了。

修复方案

1. 补全tester.razor的初始化逻辑

确保outerClass本身和其内部的InnerClass都完成实例化:

@page "/test"
@using VetJobSearch.UI.ViewModels
<EditForm Model=@outerClass>    
    <OuterComponent OuterClass="@outerClass"/>
</EditForm>

@code {
    private OuterClass outerClass { get; set; } = new OuterClass()
    {
        // 必须手动初始化InnerClass,否则默认是null
        InnerClass = new InnerClass()
    };
}

2. (可选优化)实体类添加默认初始化

直接在OuterClass定义中给InnerClass设置默认值,避免每次实例化都手动赋值:

public class OuterClass
{
    public string? OuterText {  get; set; }
    public InnerClass? InnerClass { get; set; } = new InnerClass();
}

3. (可选增强鲁棒性)组件添加空值判断

如果存在参数可能为空的场景,可以在组件渲染前加空校验,避免空引用异常:

@* OuterComponent.razor *@
@using ViewModels
@if (OuterClass?.InnerClass != null)
{
    <InnerComponent InnerClass=OuterClass.InnerClass/>
}
@code {
    [Parameter] public OuterClass OuterClass { get; set; } = new OuterClass() 
    { InnerClass = new InnerClass() };
}

内容的提问来源于stack exchange,提问作者shuri17

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 18:54:03