在 Blazor 剃刀文件中使用 <component> 标签
Usage of <component> tags inside Blazor razor files
是否可以在 .razor
文件中呈现 <component>
标签。我有一个要求,需要在另一个 Blazor 组件中呈现静态脚本。因此,我使用 BuildRenderTree
概念创建了脚本标签,并尝试添加带有 render-mode
的 <component>
标签作为 Static
。但是,它不会在网页中呈现。
ScriptRender.razor
public class ScriptRender : ComponentBase
{
[Parameter]
public List<string> Source { get; set; }
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
base.BuildRenderTree(builder);
foreach (var scriptPath in Source)
{
builder.OpenElement(0, "script");
builder.AddAttribute(1, "src", scriptPath);
builder.CloseElement();
}
}
}
BlazorComponent.razor
<component type="typeof(ScriptRender)" render-mode="Static"></component>
// Rest of component rendering logics
我知道,<component>
标签可以用在 layout.cshtml 页面中。不在 Blazor 剃须刀页面中工作吗?
Tag Helper 组件不属于 Blazor。 Blazor 没有标签助手的概念,而是组件的概念,因此您不能将它嵌入到 Blazor 组件中。您只能在 .cshtml 扩展文件中使用组件 Tag Helper。在 Blazor 上下文中,_Host.cshtml 文件中使用了组件 Tag Helper,它实际上是一个 Razor 页面,用于处理对 Blazor Server App 的初始请求,包括 Blazor 应用程序的呈现。
是否可以在 .razor
文件中呈现 <component>
标签。我有一个要求,需要在另一个 Blazor 组件中呈现静态脚本。因此,我使用 BuildRenderTree
概念创建了脚本标签,并尝试添加带有 render-mode
的 <component>
标签作为 Static
。但是,它不会在网页中呈现。
ScriptRender.razor
public class ScriptRender : ComponentBase
{
[Parameter]
public List<string> Source { get; set; }
protected override void BuildRenderTree(RenderTreeBuilder builder)
{
base.BuildRenderTree(builder);
foreach (var scriptPath in Source)
{
builder.OpenElement(0, "script");
builder.AddAttribute(1, "src", scriptPath);
builder.CloseElement();
}
}
}
BlazorComponent.razor
<component type="typeof(ScriptRender)" render-mode="Static"></component>
// Rest of component rendering logics
我知道,<component>
标签可以用在 layout.cshtml 页面中。不在 Blazor 剃须刀页面中工作吗?
Tag Helper 组件不属于 Blazor。 Blazor 没有标签助手的概念,而是组件的概念,因此您不能将它嵌入到 Blazor 组件中。您只能在 .cshtml 扩展文件中使用组件 Tag Helper。在 Blazor 上下文中,_Host.cshtml 文件中使用了组件 Tag Helper,它实际上是一个 Razor 页面,用于处理对 Blazor Server App 的初始请求,包括 Blazor 应用程序的呈现。