【问题标题】:How to override base class render fragments from deriver class in Blazor如何覆盖 Blazor 中派生类的基类渲染片段
【发布时间】:2022-12-15 07:49:05
【问题描述】:

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

IE。

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;
  }

派生页面.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 的页面。

我怎样才能做到这一点?

谢谢

【问题讨论】:

    标签: blazor


    【解决方案1】:

    你有两个选择。

    1. Shoehorn 将必要的功能插入到ComponentBase 中。此答案显示了如何使用现有的 ComponentBase - https://stackoverflow.com/a/74613188/13065781 构建模板

    2. 构建您自己的基础组件,旨在处理包装器功能。这里有一个我的回购协议,向您展示了如何做到这一点 - https://github.com/ShaunCurtis/Blazr.Demo.ComponentWrapper

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-16
      • 2018-07-31
      • 2017-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多