TagHelper未呈现

时间:2017-09-24 08:54:50

标签: c# razor asp.net-core asp.net-core-tag-helpers

我在.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

Razor视图看起来:

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

在csproj我有deps:

<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

1 个答案:

答案 0 :(得分:11)

你遇到的问题是:

@addTagHelper *, MyApp //MyApp.TagHelpers

虽然它看起来像是评论,但//MyApp.TagHelpers在这一行上无效,并且正在绊倒TagHelper发现逻辑。

只需删除该部分即可使用。即:

@addTagHelper *, MyApp