WASM Blazor 在用作嵌套组件的参数时将内部对象报告为 null (VS2022/.Net core 6)

Posted

技术标签:

【中文标题】WASM Blazor 在用作嵌套组件的参数时将内部对象报告为 null (VS2022/.Net core 6)【英文标题】:WASM Blazor is reporting an inner object as null when used as a parameter to a nested component (VS2022/.Net core 6) 【发布时间】:2021-12-05 04:47:26 【问题描述】:

我已经建立了一个非常简单的例子:

tester.razor

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


OuterComponent.razor

@using ViewModels
<InnerComponent InnerClass=OuterClass.InnerClass/>
@code 
    [Parameter] public OuterClass OuterClass  get; set;  = new OuterClass() 
     InnerClass = new InnerClass() ;

InnerComponent.razor

@using ViewModels
<div>Inner Component</div>      
<InputText @bind-Value=InnerClass.InnerText />
@code 
   [Parameter] public InnerClass InnerClass  get; set;  = new InnerClass();
               

这里是类本身:

public class OuterClass

    public string? OuterText   get; set; 
    public InnerClass? InnerClass  get; set; 


public class InnerClass
 
    public string? InnerText  get; set; 

我一定是错过了什么,因为每次我运行它,我都会得到:

未处理的异常渲染组件:对象引用未设置为 一个对象的实例。

System.NullReferenceException:对象引用未设置为对象的实例。

任何帮助将不胜感激!

【问题讨论】:

请出示您的outerClass 对象。你是不是用new OuterClass() 把它幻化了? 它实际上是在顶部“文件”中实例化的:OuterComponent.razor: 如果您没有为 OuterClass 参数分配值,它将是默认值。我正在寻找的是你为你的模型分配了什么outerClass?它可能只是new OuterClass() 属性nullInnerClass 哦!我忘记了那个代码(我把它放在代码隐藏文件中)。我加一下 其实就是这样...我混淆了参数变量。谢谢!!! 【参考方案1】:

原来我错过了最外面的声明。谢谢 iamrafelperez!

【讨论】:

以上是关于WASM Blazor 在用作嵌套组件的参数时将内部对象报告为 null (VS2022/.Net core 6)的主要内容,如果未能解决你的问题,请参考以下文章

Blazor WASM 在组件之间传递值

Blazor WASM - 分成多个组件 (MudBlazor)

C#:如何在 Blazor Wasm 托管中将动态 Razor 组件从服务器发送到客户端?

Blazor_WASM之3:项目结构

Blazor WASM 页面路由

具有 ReportViewer 导出功能的 Blazor (Wasm)