c# - 添加自定义标签助手

标签 c# asp.net-core-mvc

我一直在尝试添加自定义标签助手,但当我尝试将程序集添加为 _ViewImports.cshtml 中的引用时,它无法识别它。

我正在这样做 (_ViewImports.cshtml):

@using ProjectName.Web.Main
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, TagHelpers

我也试过:

@addTagHelper *, ProjectName.Web.Main.TagHelpers

我的标签助手如下:

using Microsoft.AspNetCore.Razor.TagHelpers;
namespace ProjectName.Web.Main.TagHelpers
{
    [HtmlTargetElement(Attributes="class")]
    public class CssClassTagHelper : TagHelper
    {
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            output.Attributes.Add(new TagHelperAttribute("class","testing"));

        }
    }
}

但是当我运行该应用程序时,出现以下异常:

Cannot resolve TagHelper containing assembly 'TagHelpers'. Error: Could not load file or assembly 'TagHelpers, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified. @addTagHelper *, TagHelpers

我已经用谷歌搜索过了,但我在不同的 dotnetcore 版本之间得到了混合的答案,到目前为止我还没有找到任何解决方案。

我正在使用 RC2。

有什么想法、建议吗?

最佳答案

根据 Asp.Net Core 文档:

To expose all of the Tag Helpers in this project (which creates an assembly named AuthoringTagHelpers), you would use the following:

@using AuthoringTagHelpers 
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper "*, AuthoringTagHelpers"

换句话说,addTagHelper 的第二个参数是程序集名称,而不是命名空间。

所以你应该在 _ViewImports.cshtml 中使用 ProjectName.Web.Main(我假设你的项目名称是):

@using ProjectName.Web.Main
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, ProjectName.Web.Main

关于c# - 添加自定义标签助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37899984/

相关文章:

c# - 如何使用 Localizer 本地化 asp-action

c# - 在并行循环之间保留 ThreadLocal 是好还是坏?

c# - 受限类型的通用集合

asp.net-core - ActionResult参数含义

asp.net-core-mvc - 在 IIS 上部署 .Net Core WebAPI 项目

asp.net-core - CSHTML View 在应用程序重新启动之前不会更新

c# - WebAPI - 对象数组在服务器端未正确反序列化

c# - 同时使用 Readline() 和 ReadKey()

c# - 如何在 Xamarin.iOS 应用程序中创建导航?

asp.net-core - 如何使用 "razor page"Error.cshtml 设置 app.UseExceptionHandler?