web-dev-qa-db-ja.com

カスタムタグヘルパーが機能しない

ASP Core。のカスタムタグヘルパーの作成に関するいくつかのガイドに従いました。

これは私のヘルパーです:

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

これを_ViewImports.cshtmlにドロップします:@addTagHelper *, ToolConstrolSystem.TagHelpers

Annnndd ...何もありません。インテリセンス、タグの置き換えはありません...

何か案は?

22
Matthew Goulart

ビューのインポートファイルにはアセンブリ名のみを指定する必要があります。

_ViewImports.cshtml: 

@addTagHelper *, ToolConstrolSystem
68
Anuraj

タグヘルパースコープの管理を参照

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

上記のコードは、ワイルドカード構文( "*")を使用して、指定されたアセンブリ(Microsoft.AspNetCore.Mvc.TagHelpers)のすべてのタグヘルパーが、Viewsディレクトリまたはサブディレクトリのすべてのビューファイルで使用できるように指定します。

4
RickAndMSFT

そのため、タグヘルパーが機能していない問題を追いかけるのに少し時間を無駄にしました。しばらくしてから寝て、今日は新鮮な目でもう一度試してみましたが、Razor PagesフォルダーにViewsフォルダーだけに@addTagHelperを追加していないことに気付きました。

必要に応じて、この/ Pages +/Viewsの概念があれば、_ViewImports.cshtmlをすべて確認してください。このメモをここに残しておくと、誰かの疲れた脳を思い出させ、休憩を取り、散歩やスヌーズに行くのに役立つかどうかを思い出すことができます。

enter image description here

0
Rui Lima