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

C# Blazor Server如何实现子组件向父组件传递自定义类对象

Blazor子组件回传自定义类对象解决方案

完全可以实现,你当前代码运行异常的核心原因是子组件的EventCallback泛型参数类型不匹配,按以下步骤修改即可:

1 推荐方案:修改子组件EventCallback的泛型类型

Blazor的EventCallback支持泛型绑定任意自定义类型,你只需要将子组件中原本的EventCallback<object>替换为你的自定义类HagClass即可,同时要确保子组件引用了该类的命名空间。

修正后的子组件代码:

@* 顶部引入自定义类所在命名空间 *@
@using Blazor_PH_Par_Child.Shared

@code {
    [Parameter]
    public string GiveMeDatFromPar { get; set; }

    // 将泛型从object改为自定义类HagClass
    [Parameter]
    public EventCallback<HagClass> OnEmployeeDeleted { get; set; }

    HagClass x = new HagClass();

    public void Delete_Click()
    {
        x.parChildSet = "test";
        OnEmployeeDeleted.InvokeAsync(x);
    }
}

<h3>HagChild</h3>

<button type="button" class="btn btn-danger m-1"
        @onclick="Delete_Click">
    Delete
</button>

<p>hello @GiveMeDatFromPar</p>

修改完成后不需要调整父组件代码,你在父组件的IwasGivendatabackfromclient方法中可以直接拿到完整的HagClass对象,读取对应的属性值。

2 临时兼容方案:父组件做显式类型转换

如果你不想修改子组件的EventCallback定义,也可以在父组件的接收方法中对传入的object对象做显式类型转换,不推荐该方案,缺少编译时类型校验,容易出现运行时错误:

private void IwasGivendatabackfromclient(object x)
{
    var result = x as HagClass;
    if(result != null)
    {
        string text = result.parChildSet;
        // 后续逻辑
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 08:39:00