【问题标题】:How to render templates in blazor components?如何在 blazor 组件中呈现模板?
【发布时间】:2019-06-18 11:03:03
【问题描述】:

我尝试通过 c# 在 blazor 中渲染模板。

我浏览过微软文档。他们建议使用 RenderFragment。但我无法找到正确的方法来实现这一点。

【问题讨论】:

    标签: blazor


    【解决方案1】:

    定义一个简单的 FilmList 组件,它只循环传入的电影。FilmTemplate 属性是一个模板参数。模板参数是模板化组件与普通组件不同的原因。

    模板参数允许您定义组件的一个区域,该区域将在渲染时使用组件使用者提供的模板。它们可以定义为 RenderFragment 或 RenderFragment 。稍后我会介绍通用版本。

    FilmList.razor:

    <div>
      @foreach (var film in Films)
      {
        @FilmTemplate(film)
      }
    </div>
    
    @code{
      [Parameter] RenderFragment FilmTemplate { get; set; }
      [Parameter] IReadOnlyList Films { get; set; }
    }
    

    用法:

    <FilmList Films="@Films">
      <FilmTemplate>
        <div>@context.Title (@context.YearReleased)</div>
      </FilmTemplate>
    </FilmList>
    
    @code {
      public List Films { get; set; } = new List {
        new Film("Pulp Fiction", "1994", "pulp-fiction.jpg"),
        new Film("Bad Boys II", "2003", "bad-boys2.jpg"),
        new Film("The Fast and the Furious", "2001", "tfatf.jpg"),
        new Film("The Greatest Showman", "2017", "greatest-showman.jpg")
      };
    }
    

    为了使用 FilmList 组件,我们必须为电影定义一个模板。这是使用与模板参数名称匹配的元素完成的,在我们的例子中。

    来源:https://visualstudiomagazine.com/articles/2018/12/01/blazor-templated-components.aspx

    希望这会有所帮助... 如果您有任何问题或不清楚的地方,请随时提问。

    【讨论】:

    • StackOverflow 已删除您的 &lt;Film&gt; 泛型。
    猜你喜欢
    • 1970-01-01
    • 2020-10-23
    • 2020-07-20
    • 2020-01-04
    • 2020-11-04
    • 2020-12-29
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    相关资源
    最近更新 更多