0

我对 .NET Core 2.0 中的 TagHelpers 有一个有趣的问题。原来的助手工作似乎是正确的。但海关不行。我编写了受代码启发的原始图像助手(https://github.com/aspnet/Mvc/blob/dev/src/Microsoft.AspNetCore.Mvc.TagHelpers/ImageTagHelper.cs),但仍然无法正常工作。

这是我的帮手:

namespace MyApp.TagHelpers
{
    [HtmlTargetElement("Blob", Attributes = FilenameAttributeName + "," + AltAttributeName, TagStructure = TagStructure.WithoutEndTag)]
    public class BlobTagHelper : TagHelper
    {
        public BlobTagHelper() { }

        private const string FilenameAttributeName = "filename";
        private const string AltAttributeName = "alt";

        [HtmlAttributeName(FilenameAttributeName)]
        public string Filename { get; set; }


        [HtmlAttributeName(AltAttributeName)]
        public string Alt { get; set; }

        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            output.TagName = "img";
            //...
        }
    }    
}

在 _ViewImports.cshtml 我有这个:

@using MyApp

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, MyApp //MyApp.TagHelpers

剃刀视图看起来像这样:

<blob filename="@mainImage.Filename" alt="@mainImage.Title" />

在 csproj 我有部门:

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />

这个包应该有 TagHelpers 参考: https ://www.nuget.org/packages/Microsoft.AspNetCore.all

页面上的最终结果如下所示:

<blob filename="babylon.jpeg" alt="babylon.jpg"></blob>

我没有错误或异常,只是没有呈现。

编辑

这是一个没有工作<email>助手的单独项目。 https://github.com/petrck/dotnet-taghelper-sample

4

1 回答 1

12

您遇到的问题在这一行:

@addTagHelper *, MyApp //MyApp.TagHelpers

虽然它看起来像一个注释,但//MyApp.TagHelpers在这一行上是无效的,并且会影响TagHelper发现逻辑。

只需删除该部分,它就会工作。IE:

@addTagHelper *, MyApp
于 2017-09-25T11:03:49.830 回答