我们可以在剃刀页面中使用 addTagHelper 吗?

时间:2021-04-01 19:03:57

标签: c# asp.net asp.net-mvc asp.net-core razor

在一个 ASP.NET CORE 3.1 MVC 项目中,我在

中添加了一个 Custom TagHelper
Views > _ViewImports.cshtml

标记现在在该文件夹内的所有视图中都可以正常工作。

我还搭建了 AspNetCore.Identity 页面,所以在我的项目中我也有

Areas > Identity > Pages > _ViewImports.cshtml

然后是一大堆 Razor 页面

Areas > Identity > Pages > Account > ...

现在,无论我将 TagHelper 添加到 _ViewImports.cshtml 还是直接添加到任何 Razor 页面,标记都不起作用。

Razor 中的 Areas 页面与 TagHelper 的工作方式不同吗?我可以通过这种方式将 TagHelpers 添加到 .cshtml 页面还是仅适用于 Views 文件夹中的 .cshtml 页面?

2 个答案:

答案 0 :(得分:1)

TagHelper 应该完全适合 Razor Pages。只需将 @addTagHelper *, <ProjectName> 添加到您的 _ViewImports.cshtml 中,其中 <ProjectName> 是定义您的自定义 TagHelper 的项目的名称。通配符 * 将使所有从 _ViewImports.cshtml 继承的视图中定义的所有标签助手都可用。如果您希望只让一个特定的 TagHelper 可用于所有继承自 _ViewImports.cshtml 的视图,请添加 @addTagHelper <SpecificTagHeler>, <ProjectName> 其中 SpecificTagHelper 是您的标签助手的完全限定名称,例如 {{ 1}} 和 AuthoringTagHelpers.TagHelpers.EmailTagHelper 是您的项目或程序集的名称,其中定义了 <ProjectName>,例如 TagHelper ie

AuthoringTagHelpers

@addTagHelper AuthoringTagHelpers.TagHelpers.EmailTagHelper, AuthoringTagHelpers

答案 1 :(得分:1)

如果在 addTagHelper 页面中添加 Areas > Identity > Pages > _ViewImports.cshtml 指令,只有身份剃刀页面可以使用自定义标签助手。 Views 文件夹中的视图页面无法使用自定义标签助手。

要使 Views 文件夹的页面使用自定义标签助手,我们应该在 addTagHelper 页面中添加 Views > _ViewImports.cshtml 指令。

要使 Views 文件夹的页面和 Identity razor 页面使用自定义标签助手,我们需要在 addTagHelperAreas > Identity > Pages > _ViewImports.cshtml 中添加 Views > _ViewImports.cshtml 指令。

另外,正如 AntonKovachev 所说,当我们添加 addTagHelper 指令时,我们应该使用项目名称。例如,我的项目名称是“netcore3”,并且我在 Taghelpers 文件夹中创建了一个 MyCustomTagHelper,那么 addTagHelper 指令应该是这样的(您可以将项目名称或文件路径更改为您的):

@addTagHelper *, netcore3

@addTagHelper netcore3.TagHelpers.MyCustomTagHelper, netcore3

查看下面的截图(登录和注册页面是Identity razor页面,Index页面是View页面。):

enter image description here