添加自定义标记帮助程序

jac*_*per 4 c# asp.net-core-mvc

我一直在尝试添加自定义标记帮助程序,但是当我尝试在_ViewImports.cshtml中添加程序集作为引用时,它无法识别它.

我这样做(_ViewImports.cshtml):

@using ProjectName.Web.Main
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, TagHelpers
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

@addTagHelper *, ProjectName.Web.Main.TagHelpers
Run Code Online (Sandbox Code Playgroud)

我的标签助手如下:

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"));

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行应用程序时,我得到以下异常:

无法解析包含程序集"TagHelpers"的TagHelper.错误:无法加载文件或程序集"TagHelpers,Culture = neutral,PublicKeyToken = null"或其依赖项之一.该系统找不到指定的文件.@addTagHelper*,TagHelpers

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

我正在使用RC2.

任何想法,建议?

ade*_*lin 9

根据Asp.Net核心文档:

要公开此项目中的所有Tag Helpers(创建名为AuthoringTagHelpers的程序集),您将使用以下内容:

@using AuthoringTagHelpers 
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper "*, AuthoringTagHelpers"
Run Code Online (Sandbox Code Playgroud)

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

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

@using ProjectName.Web.Main
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, ProjectName.Web.Main
Run Code Online (Sandbox Code Playgroud)