如何在 Blazor 中使用 TagHelpers?

Posted

技术标签:

【中文标题】如何在 Blazor 中使用 TagHelpers?【英文标题】:How to use TagHelpers in Blazor? 【发布时间】:2018-08-29 14:34:40 【问题描述】:

我创建了一个标签助手,并希望在我的 Blazor 示例项目中使用它。 但是,当我想使用标签助手时,编译器会抱怨:

CS0103 The name 'StartTagHelperWritingScope' does not exist in the current context FirstBlazorApp.

使标签助手在 Blazor 中工作还需要什么?

【问题讨论】:

你是否在 taghelper 的命名空间中包含了 using..? 是的,除了@using,我还有@addTagHelper 指令。错误消息出现在编译时,只要我真的想使用标签助手。 【参考方案1】:

更新:.NET 5.0 或更高版本的 ASP.NET Core 支持将 Razor 组件集成到托管 Blazor WebAssembly 应用中的 Razor 页面和 MVC 应用中。 (微软文档)

Blazor 不支持标记助手。至少现在还没有。

【讨论】:

似乎是这样:/ 令人困惑的是默认项目布局包含一个用于 taghelpers 的指令:@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers Blazor 中存在哪些选项来实现基于属性的标签助手。例如。可以在存在特定属性的情况下调用标记助手,然后重写输出。 Blazor 组件面向元素输出。【参考方案2】:

在 blazor 页面上,您将使用 blazor 组件,这类似于 TagHelper,但它运行客户端并且类似于 Angular 组件(或任何其他客户端 JS 框架中的类似组件)就是这一点。 TagHelpers 在服务器上运行,blazor 组件在客户端上运行,两者都允许您创建新标签。 blazor 中的一个简单组件是当前位于 Shared 文件夹中的 NavMenu。

【讨论】:

此外,Razor 组件(Blazor 的组件模型)不是典型的 Razor 实现。与 html 帮助程序或标记帮助程序不同,Razor 组件被编译为 C# 类。其中 HTML Helper 和 Tag Helper 是用于生成字符串 (HTML) 的实用程序,Razor Components 产品 Render Trees。【参考方案3】:

我知道这是一个老问题,但我刚刚发现您可以在 Razor 组件中使用部分组件。因此,如果您想使用标签助手,请将需要它们的元素移动到部分并将其包含在 Razor 组件中。

【讨论】:

我知道这是一个旧答案,但你能举个例子吗?

以上是关于如何在 Blazor 中使用 TagHelpers?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Blazor 上传文件?

Blazor - 如何使用 ICommand 在按钮单击中执行表单提交

如何在 Blazor 中使用 alert()、confirm() 和 prompt() 函数?

如何使用 Blazor 和 NetCore 5 在电子邮件中将 razor 组件作为正文发送?

如何在 Blazor 中使用引导转换 .collapse

如何在 Blazor WebAssembly中 使用 功能开关