添加自定义标记帮助程序

时间:2016-06-18 17:52:33

标签: 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"));

        }
    }
}

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

  

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

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

我正在使用RC2。

任何想法,建议?

1 个答案:

答案 0 :(得分:9)

根据Asp.Net核心文档:

  

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

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

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

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

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