TagHelper未呈现

Pet*_*šek 0 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";
            //...
        }
    }    
}
Run Code Online (Sandbox Code Playgroud)

在_ViewImports.cshtml中,我只是这样:

@using MyApp

@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, MyApp //MyApp.TagHelpers
Run Code Online (Sandbox Code Playgroud)

剃刀观看这个:

<blob filename="@mainImage.Filename" alt="@mainImage.Title" />
Run Code Online (Sandbox Code Playgroud)

在csproj我有deps:

<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.0" />
Run Code Online (Sandbox Code Playgroud)

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

最后页面上的结果看起来如下:

<blob filename="babylon.jpeg" alt="babylon.jpg"></blob>
Run Code Online (Sandbox Code Playgroud)

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

编辑

这是一个没有工作<email>帮助的分离项目. https://github.com/petrck/dotnet-taghelper-sample

Kir*_*kin 12

你遇到的问题是这一行:

@addTagHelper *, MyApp //MyApp.TagHelpers
Run Code Online (Sandbox Code Playgroud)

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

只需删除该部分即可.即:

@addTagHelper *, MyApp
Run Code Online (Sandbox Code Playgroud)

  • 这有效的原因是因为`@ addTagHelper`语法需要将程序集名称作为其第二部分(而不是命名空间). (2认同)