【问题标题】:ASP.NET Core 2.0 and TagHelper ExampleASP.NET Core 2.0 和 TagHelper 示例
【发布时间】:2018-01-20 18:47:55
【问题描述】:

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

【问题讨论】:

  • 我正在尝试相同的示例,在我的情况下,无法识别 TagHelper 基类。上下文菜单(Rosalyn/ReSharper?)中的一种解决方案是在 nuget.org 上查看。这指向 Microsoft.AspNetCore.Razor.Runtime。安装该软件包后,TagHelper 被识别。

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


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。这是我尝试的第一件事,但没有奏效。
猜你喜欢
  • 1970-01-01
  • 2020-12-08
  • 2019-05-30
  • 2019-10-23
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
相关资源
最近更新 更多