首页 > 解决方案 > 如何修复 VS 代码中的自定义标签助手问题?

问题描述

我环顾堆栈并尝试了很多方法来解决我的问题,但我的自定义标签助手只是没有呈现。我在堆栈上看到的所有问题都是使用 Visual Studio 并且我使用的是 VS 代码,所以我不知道这是否有帮助。

using System;
using Microsoft.AspNetCore.Html;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using Microsoft.AspNetCore.Razor.TagHelpers;

namespace Learners_Project.CustomTagHelpers
{
    public class StepTagHelper : TagHelper
    {
      private const string EmailDomain = "contoso.com";

      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);
     }
  }
}

这就是我的视图

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

@{
ViewData["Title"] = "Home Page";

 }

<step mail-to = "test"></step>
<p>why is this not working</p>

当我运行它并查看检查器时,步骤行没有被解析

标签: c#asp.netvisual-studio-codeasp.net-core-mvcasp.net-core-tag-helpers

解决方案


@addTagHelper指令使您的自定义标签助手在视图中可用。该指令的参数指定 (1) 要导入哪些标签助手和 (2) 从哪个程序集加载这些标签助手。在这种情况下,我认为您的程序集/项目名称中的空格引起了一些误解。即使您的项目的命名空间可能是Learners_Project程序集名称仍然是Learners Project(不带下划线)。由于没有名称Learners_Project(带有下划线)的程序集,因此无法找到标签助手。

将 import 语句从@addTagHelper *, Learners_Projectto更改@addTagHelper *, Learners Project可能会解决问题。但是,如果这不能解决问题,则参数周围的引号可以( @addTagHelper "*, Learners Project")。在我的测试项目中,这不是必需的。


推荐阅读