我正在处理一个.NET Blazor项目,需要将多个级联值传递到通用子窗体。以下代码应用了多个[CCascadingValue]属性,在传递一些值时效果良好,但在传递更多值时会变得有点麻烦。是否有通过单个[CastingValue]属性传递多个值的简写?如果没有,是否有更紧凑的方法来传递更多的值?(顺便说一句——我确实理解,除了给每个属性命名之外,还有其他选择(。
<CascadingValue Value="@Value1" Name = "Name1" >
<CascadingValue Value="@Value2" Name = "Name2" >
<CascadingValue Value="@Value3" Name = "Name3" >
<FooComponent />
</CascadingValue>
</CascadingValue>
</CascadingValue>
您可以创建一个包含所有要传递的值的对象,并像这样使用
<CascadingValue Value="@AnyObject" IsFixed="true">
</CascadingValue>
在Surinder的回答的基础上,这里有一个扩展示例,其中包含用于获取对象的子代码。
父
<CascadingValue Value="@anyObject" IsFixed="True" Name="AnyName">
<ComponentName />
</CascadingValue>
@code {
private ObjectType anyObject = new();
}
儿童
@code {
[CascadingParameter(Name = "AnyName")]
private ObjectType anyObject { get; set; }
}