我正在尝试使用ASP.NET Core 2.0关注以下tutorial。该代码应该使用锚标记<email>
替换<a href="mailto:email@something.com" />
标记。当我运行项目时,TagHelper代码永远不会被执行。任何建议都将不胜感激。
注意:它似乎是visual studio项目的一个问题。我能够找到一个与TagHelpers一起工作的视觉工作室code sample并使用它作为模板重新创建我的项目并且它有效。我对我的项目和工作项目进行了比较,但我没有发现.sln或.csproj文件有任何重大差异来解释这个问题。
这是TagHelper类:
using Microsoft.AspNetCore.Razor.TagHelpers;
using System.Threading.Tasks;
namespace AuthoringTagHelpers.TagHelpers
{
[HtmlTargetElement("email")]
public class EmailTagHelper : TagHelper
{
private const string EmailDomain = "contoso.com";
// Can be passed via <email mail-to="..." />.
// Pascal case gets translated into lower-kebab-case.
[HtmlAttributeName("mail-to")]
public string MailTo { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "a"; // Replaces <email> with <a> tag
var address = MailTo + "@" + EmailDomain;
output.Attributes.SetAttribute("href", "mailto:" + address);
output.Content.SetContent(address);
}
}
}
以下是使用TagHelper的视图:
@{
ViewData["Title"] = "About";
}
<h2>@ViewData["Title"]</h2>
<h3>@ViewData["Message"]</h3>
<p>Use this area to provide additional information.</p>
<address>
<strong>Support:</strong><email mail-to="Support"></email><br />
<strong>Marketing:</strong><email mail-to="Marketing"></email>
</address>
我在_ViewImports.cshtml中添加了以下内容:
@addTagHelper *, AuthoringTagHelpers
答案 0 :(得分:1)
要使EmailTagHelper类可用于我们的所有Razor视图,请将addTagHelper指令添加到Views / _ViewImports.cshtml文件中:
@using AuthoringTagHelpers
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, AuthoringTagHelpers
您需要在_viewimports文件中添加上述代码。现在,您已将其添加到View中。