ASP.NET Core 2.0和TagHelper示例

时间:2018-01-20 18:47:55

标签: asp.net-core asp.net-core-tag-helpers

我正在尝试使用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

1 个答案:

答案 0 :(得分:1)

要使EmailTagHelper类可用于我们的所有Razor视图,请将addTagHelper指令添加到Views / _ViewImports.cshtml文件中:

@using AuthoringTagHelpers
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, AuthoringTagHelpers

您需要在_viewimports文件中添加上述代码。现在,您已将其添加到View中。