在 ASP.NET Core 2.1 中添加自定义 TagHelper
Add Custom TagHelpers in ASP.NET Core 2.1
我已严格按照 ASP.NET 核心文档进行操作,并花费了大量时间来尝试实现简单的自定义 TagHelper,但没有成功。
任何人都可以就任何陷阱或已知错误提出建议吗?
应用程序属性:
AssemblyName: AmpWeb
Target Framework .NET Core 2.1
NuGet 包
Microsoft.AspNetCore.All 2.1.2
环境
OS: Windows 7 (x64)
SDK: Microsoft .NET Core SDK 2.1.302 (x64)
IDE: Visual Studio 2017 Professional 15.7.4
TagHelpers/EmailTagHelper.cs
using Microsoft.AspNetCore.Razor.TagHelpers;
namespace AmpWeb.TagHelpers
{
[HtmlTargetElement(Attributes = "email")]
public class EmailTagHelper : TagHelper
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "a"; // Replaces <email> with <a> tag
}
}
}
Views/_ViewImports.cshtml
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, AmpWeb
Index.cshtml
<h1>Hello World</h1>
<email>WHY</email>
输出
<h1>Hello World</h1>
<email>WHY</email>
这是一个微妙但重要的问题。问题是这行代码 [HtmlTargetElement(Attributes = "email")]
如果您删除它,它应该可以通过使用您的 <email>WHY</email>
标记来工作。您也可以将其替换为 [HtmlTargetElement("email")]
但在这种情况下实际上什至不需要它,因为框架可以从 class EmailTagHelper
.
的名称中推断出该信息
通过包含 [HtmlTargetElement(Attributes = "email")]
,您是说您希望通过任何标签上的属性调用标签助手。因此调用它会类似于 <div email></div>
或 <span email></span>
例如。
我已严格按照 ASP.NET 核心文档进行操作,并花费了大量时间来尝试实现简单的自定义 TagHelper,但没有成功。
任何人都可以就任何陷阱或已知错误提出建议吗?
应用程序属性:
AssemblyName: AmpWeb
Target Framework .NET Core 2.1
NuGet 包
Microsoft.AspNetCore.All 2.1.2
环境
OS: Windows 7 (x64)
SDK: Microsoft .NET Core SDK 2.1.302 (x64)
IDE: Visual Studio 2017 Professional 15.7.4
TagHelpers/EmailTagHelper.cs
using Microsoft.AspNetCore.Razor.TagHelpers;
namespace AmpWeb.TagHelpers
{
[HtmlTargetElement(Attributes = "email")]
public class EmailTagHelper : TagHelper
{
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "a"; // Replaces <email> with <a> tag
}
}
}
Views/_ViewImports.cshtml
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, AmpWeb
Index.cshtml
<h1>Hello World</h1>
<email>WHY</email>
输出
<h1>Hello World</h1>
<email>WHY</email>
这是一个微妙但重要的问题。问题是这行代码 [HtmlTargetElement(Attributes = "email")]
如果您删除它,它应该可以通过使用您的 <email>WHY</email>
标记来工作。您也可以将其替换为 [HtmlTargetElement("email")]
但在这种情况下实际上什至不需要它,因为框架可以从 class EmailTagHelper
.
通过包含 [HtmlTargetElement(Attributes = "email")]
,您是说您希望通过任何标签上的属性调用标签助手。因此调用它会类似于 <div email></div>
或 <span email></span>
例如。