是否可以将组件的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
是一个委托。在您的示例中,分配给DataGridColumns
的RenderFragment
属于父页面/组件,而不是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 AcceptedChild
和RenderFragment AcceptedChild2
,但不包含RenderFragment InvalidChild
。