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

如何在Razor标记中向Blazor组件传递复杂类型参数

实现方案

你需要的这种嵌套标记传复杂参数的写法是Blazor原生支持的,仅需要做少量修改即可正常运行:

1. 给组件参数添加[Parameter]特性

Blazor要求所有接收外部传值的组件参数都必须标注[Parameter]特性,同时组件需要继承ComponentBase基类,修改后的代码如下:

using Microsoft.AspNetCore.Components;

public class MyComponent : ComponentBase
{
    [Parameter]
    public int Height { get; set; }

    [Parameter]
    public SensorData SensorDataProperty { get; set; }
}

public class SensorData
{
    public int Speed { get; set; }
    public int Throughput { get; set; }
}

2. 直接使用你示例中的嵌套写法调用即可

你写的Razor调用代码不需要任何调整,可以直接生效:

<MyComponent Height="3">
    <SensorDataProperty>
        <SensorData Speed="300" Throughput="5"/> 
    </SensorDataProperty>
</MyComponent>

补充说明

  • 你提到SensorData不需要渲染,这种场景下不需要做任何额外处理,Blazor不会自动渲染该参数的内容,仅会完成参数的赋值逻辑,你可以直接在MyComponent的内部代码中使用SensorDataProperty的属性值
  • 如果不需要嵌套写法,也可以直接用属性内联赋值的方式传值,效果完全一致:
    <MyComponent Height="3" SensorDataProperty='new SensorData{ Speed = 300, Throughput = 5 }' />
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 07:06:03