webentwicklung-frage-antwort-db.com.de

Benutzerdefinierter Tag-Helfer funktioniert nicht

Ich habe ein paar Anleitungen zum Erstellen eines benutzerdefinierten Tag-Helpers für ASP Core befolgt.

Das ist mein Helfer:

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

Ich lasse dies in _ViewImports.cshtml: @addTagHelper *, ToolConstrolSystem.TagHelpers

Annnndd ... nichts. Kein Intellisense, kein Tag ersetzt ...

Irgendwelche Ideen?

16
Matthew Goulart

Sie müssen nur den Assemblynamen in der Ansichtsimportdatei angeben.

_ViewImports.cshtml: 

@addTagHelper *, ToolConstrolSystem
47
Anuraj

Siehe Verwalten des Tag Helper-Bereichs

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

Der obige Code verwendet die Platzhaltersyntax ("*"), um anzugeben, dass alle Tag-Helfer in der angegebenen Assembly (Microsoft.AspNetCore.Mvc.TagHelpers) für jede Ansichtsdatei im Verzeichnis Views oder im Unterverzeichnis verfügbar sind. 

3
RickAndMSFT

Ich verschwendete also ein bisschen Zeit damit, dem Problem zu folgen, wo ein Taghelper nicht funktionierte. Nach einer Weile bin ich ins Bett gegangen und heute habe ich es mit frischen Augen noch einmal versucht, dann wurde mir klar, dass ich den @addTagHelper im Razor Pages-Ordner nicht nur im Views-Ordner hinzugefügt habe.

Wenn Sie also Folgendes haben: Ich habe diese/Pages +/Views-Konzepte, stellen Sie sicher, dass Sie alle _ViewImports.cshtml .. _ durchgehen. Wenn Sie diese Notiz hier lassen, wird das müde Gehirn von Someelse erinnert oder ein Nickerchen.

 enter image description here

0
Rui Lima