【发布时间】:2019-06-18 11:03:03
【问题描述】:
我尝试通过 c# 在 blazor 中渲染模板。
我浏览过微软文档。他们建议使用 RenderFragment。但我无法找到正确的方法来实现这一点。
【问题讨论】:
标签: blazor
我尝试通过 c# 在 blazor 中渲染模板。
我浏览过微软文档。他们建议使用 RenderFragment。但我无法找到正确的方法来实现这一点。
【问题讨论】:
标签: blazor
定义一个简单的 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
希望这会有所帮助... 如果您有任何问题或不清楚的地方,请随时提问。
【讨论】:
<Film> 泛型。