我在.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
答案 0 :(得分:11)
你遇到的问题是:
@addTagHelper *, MyApp //MyApp.TagHelpers
虽然它看起来像是评论,但//MyApp.TagHelpers
在这一行上无效,并且正在绊倒TagHelper
发现逻辑。
只需删除该部分即可使用。即:
@addTagHelper *, MyApp