如何在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
相关产品推荐
相关产品推荐

