首页 > 解决方案 > 无法使用Razor 页面上的标签助手?

问题描述

我正在使用 DotNetCore 3.1 和 Razor Pages。

我想使用我在Index.Razor页面上创建的 Razor 组件,但让它使用“静态”渲染模式。

根据文档:

要从页面或视图呈现组件,请使用 Component Tag Helper:

<component type="typeof(Counter)" render-mode="ServerPrerendered" 
    param-IncrementAmount="10" />

正如您在下面看到的,我可以使用它的名称作为标签 ( ) 来呈现我的组件(名为 Lister <Lister></Lister>)。但是,我无法使用<component />标签助手来呈现它。

不能使用组件标签助手

如果我运行该页面,它既不会将语法突出显示为可识别的标签助手,也不会实际呈现它。

当我运行页面时,它不显示组件,而是显示为

<component type="typeof(Lister)" render-mode="Static"></component>

在页面源中。

在另一个项目中,我能够在 MVC 视图 ( .cshtml) 文件中呈现相同的组件(使用相同的语法)。


编辑:

好的,所以我认为我错过/搞砸的是我的Index.razor文件不是 Razor 页面,而是一个可路由的 Razor 组件。

我错误地将 Blazor 项目作为 Razor Pages 项目。

Razor 页面具有.cshtml文件类型

Razor 组件具有.razor文件类型(并且可能会混淆 @page 指令)

Razor 组件无权访问<component />标签助手,必须通过以下方式使用其他 Razor 组件<theNameOfIt></theNameOfIt>

谢谢您的帮助!

标签: c#asp.net-core.net-corerazor-pagesblazor

解决方案


组件 Tag Helper 不是 Blazor 对象。Blazor 中不存在标签助手或 html 助手的概念。这是 Razor Pages 和 MVC 的领域。在 Blazor 中,我们有一个组件模型。

通常,您应该使用 _Host.cshtml 文件中的组件 Tag Helper 来呈现 Razor App 组件。

您不能在 Index.razor 组件中嵌入组件 Tag Helper。您不能在 Blazor 中使用组件标记帮助程序。_Host.cshtml 文件不是 Blazor。这是启动 Blazor 应用程序的 Razor Pages 文件...


推荐阅读