如何覆盖基类渲染片段从派生类在Blazor



我想定义一个基本页面,所有类都应该从Blazor中派生,但在覆盖模板方面存在问题。

base-page.razor

@if(ShowData)
{
<div>
@TitleTemplate
</div>
<div>
@BodyTemplate
</div>
}
else
{
<Spinner />
}
@code {
[Parameter]
public RenderFragment HeaderTemplate {get;set;}
[Parameter]
public RenderFragment BodyTemplate {get;set;}
protected bool ShowData {get;set; = false;
}

derived-page.razor

<HeaderTemplate>
some html for header here...
</HeaderTemplate>
<BodyTemplate>
some body html here...
</BodyTemplate>

@code {
private object Data = new();
protected override async Task OnInitializedAsync()
{
Data = await someService.GetData();
base.ShowData = true;
StateHasChanged()
}
}

final应该是一个在派生页面中覆盖所有RenderFragments的页面。

我该怎么做?

感谢

基本上,ComponentBase,这个世界上使用的标准组件,并不是为了处理你想要实现的功能而设计的。

你有两个选择。

  1. 将必要的功能硬塞到ComponentBase中。这个答案展示了如何使用现有的ComponentBase构建模板- https://stackoverflow.com/a/74613188/13065781

  2. 构建自己的基本组件,用于处理包装器功能。这里有一个我的repo告诉你如何做到这一点- https://github.com/ShaunCurtis/Blazr.Demo.ComponentWrapper

相关内容

  • 没有找到相关文章

最新更新