Blazor渲染片段子内容以只允许某些组件



是否可以将组件的RenderFragment子内容限制为只允许某些组件?例如

<MyParentComponent>
<Children>
<AcceptedChild/>
<InvalidChild/> <-- throw err since it shouldn't be accepted
</Children>
</MyParentComponent>

编辑:

<DataGrid>
<DataGridColumns>
<DataGridColumn/>
<DataGridColumn/>
<NotADataGridColumn/> <--- throw error
</DataGridColumns>
</DataGrid>

是否可以将组件的RenderFragment子内容限制为只允许某些组件?

否。

RenderFragment是一个委托。在您的示例中,分配给DataGridColumnsRenderFragment属于父页面/组件,而不是DataGrid,并且由渲染器在父页面的上下文中运行。仅CCD_ 5";知道";它作为符合CCD_ 6模式的委托。它无法访问内部代码,因此无法知道其中包含什么。

如果组件包含两个或多个RenderFragment参数,则在使用组件时可以限制直接子级的有效选择。

例如,如果您有具有以下参数的组件MyComponent

[Parameter]
public RenderFragment FirstChild { get; set; }
[Parameter]
public RenderFragment SecondChild { get; set; }

并且您尝试如下使用它:

<MyComponent>
<FirstChild />
<SecondChild />
<ThirdChild />
</MyComponent>

<ThirdChild />将抛出错误:

RZ9996组件"MyComponent"中无法识别的子内容。组件"MyComponent"通过以下顶级项接受子内容:"MyFirstChildComponent"、"MySecondChildComponent"。


您的示例中的等效项是Children,例如包含参数RenderFragment AcceptedChildRenderFragment AcceptedChild2,但不包含RenderFragment InvalidChild

相关内容

  • 没有找到相关文章

最新更新