web-dev-qa-db-fra.com

L'assistant de tag personnalisé ne fonctionne pas

J'ai suivi quelques guides sur la création d'un assistant de balise personnalisé pour ASP Core.

Ceci est mon aide:

using Microsoft.AspNetCore.Mvc.ViewFeatures;
using Microsoft.AspNetCore.Razor.TagHelpers;
using System;

namespace ToolControlSystem.TagHelpers
{
    [HtmlTargetElement("description", Attributes = DescriptionAttributeName, TagStructure = TagStructure.NormalOrSelfClosing)]
    public class DescriptionTagHelper : TagHelper
    {
        private const string DescriptionAttributeName = "asp-for";


        [HtmlAttributeName(DescriptionAttributeName)]
        public ModelExpression Model { get; set; }

        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            base.Process(context, output);

            var description = GetDescription(Model.ModelExplorer);

            output.TagName = "span";
            output.TagMode = TagMode.StartTagAndEndTag;
            output.Content.SetContent(description);
        }

        private string GetDescription(ModelExplorer modelExplorer)
        {
            string description;
            description = modelExplorer.Metadata.Placeholder;

            if (String.IsNullOrWhiteSpace(description))
            {
                description = modelExplorer.Metadata.Description;
            }

            return description;
        }
    }
}

Je laisse tomber ceci dans _ViewImports.cshtml: @addTagHelper *, ToolConstrolSystem.TagHelpers

Annnndd ... rien. Aucune intellisense, aucune balise ne remplace ...

Des idées?

16
Matthew Goulart

Vous devez fournir uniquement le nom de l'assembly dans le fichier d'import de vues.

_ViewImports.cshtml: 

@addTagHelper *, ToolConstrolSystem
47
Anuraj

Voir la rubrique Gestion de Tag Helper

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

Le code ci-dessus utilise la syntaxe générique ("*") pour spécifier que tous les assistants de balise de l'assembly spécifié (Microsoft.AspNetCore.Mvc.TagHelpers) seront disponibles pour chaque fichier d'affichage dans le répertoire ou sous-répertoire Views. 

3
RickAndMSFT

J'ai donc perdu un peu de temps à chercher le problème d'un taghelper qui ne fonctionnait pas. Après un moment, je me suis couché et aujourd'hui, avec de nouveaux yeux, je l'ai réessayé. C'est alors que j'ai réalisé que je n'avais pas ajouté le @addTagHelper dans le dossier Razor Pages uniquement dans le dossier Vues.

Donc, si vous aimez, j'ai ce concept/Pages +/Views assurez-vous de passer en revue tous ces _ViewImports.cshtml . Laisser cette note ici, espérons-le, rappellera le cerveau fatigué de someelse, et si cela vous permettait de faire une pause et d'aller vous promener ou une sieste.

 enter image description here

0
Rui Lima