在一个 ASP.NET CORE 3.1 MVC 项目中,我在
中添加了一个 Custom TagHelperViews > _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
页面?
答案 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 页面使用自定义标签助手,我们需要在 addTagHelper
和 Areas > Identity > Pages > _ViewImports.cshtml
中添加 Views > _ViewImports.cshtml
指令。
另外,正如 AntonKovachev 所说,当我们添加 addTagHelper
指令时,我们应该使用项目名称。例如,我的项目名称是“netcore3”,并且我在 Taghelpers 文件夹中创建了一个 MyCustomTagHelper,那么 addTagHelper
指令应该是这样的(您可以将项目名称或文件路径更改为您的):>
@addTagHelper *, netcore3
或
@addTagHelper netcore3.TagHelpers.MyCustomTagHelper, netcore3
查看下面的截图(登录和注册页面是Identity razor页面,Index页面是View页面。):