Ваш Оболочка в этом случае является RenderFragment, который вы хотите принять другой RenderFragment, поэтому его подпись будет
[Parameter] public RenderFragment<RenderFragment> Wrapper {get;set;}
Вот полный Foo.razor
@* Other content of Foo*@
<h1>This is Foo</h1>
@if(Wrapper != null){
@* Pass to Wrapper some content of Foo *@
@Wrapper(
@: @{
<h2>This comes from Foo</h2>
}
)
}
<h1>There is no more Foo</h1>
@code
{
[Parameter] public RenderFragment<RenderFragment> Wrapper {get;set;}
}
Уведомление тщательно продумайте конструкцию внутри вызова Wrapper.
Начните с @Wrapper, так что это вызов от Razor
Открытие (
после Обертка возвращает вас на C# землю, поэтому -
на новой строке, используйте @:
, чтобы вернуться к коду Razor, а затем @{
, чтобы начать C# блок
Теперь вы можете использовать Razor / HTML разметка <h2>This comes from Foo</h2>
В новой строке закройте блок C# с помощью a }
Закройте вызов на Wrapper
с помощью )
Таким образом, вы можете использовать RenderFragment, который принимает RenderFragment в качестве контекста.
Вывод этого будет
Это Foo
Что-то в обертке
Это происходит из Foo
Больше нет Foo
Вы можете проверить это здесь https://blazorfiddle.com/s/m3br8zpr