Добавить классы для тегов помощников HTML-элементов - PullRequest
1 голос
/ 25 июня 2019

В первый раз углубляясь в помощников тегов, но я не мог понять из уроков, как я должен определять классы для каждого элемента?

    [HtmlTargetElement("card")]
public class CardTagHelper : TagHelper
{
    public string Title { get; set; }
    public string Icon { get; set; }
    public override void Process(TagHelperContext context, TagHelperOutput output)
    {

        output.TagName = "CardTagHelper";
        output.TagMode = TagMode.StartTagAndEndTag;

        var sb = new StringBuilder();
        sb.AppendFormat($@"
                    <div class='card custom-card'>
                        <div class='card-header'>
                            <div class='card-title'>
                                <i class='{Icon}'></i>
                                {Title}
                            </div>
                        </div>
                        <div class='card-body'>

                        </div>
                        <div class='card-footer'>
                        </div>
                    </div>");

        output.PreContent.SetHtmlContent(sb.ToString());

        output.Attributes.SetAttribute("class", "card-body");
    }
}

ничего из этого не работает, он по-прежнему отображается на странице

РЕДАКТИРОВАТЬ

Мне бы хотелось, чтобы содержимое отображалось как-то так

<card title="title" icon="icon">
 // content
</card>

Я не уверен, что этоспособ сделать это, или я должен создать помощники тегов для тела и нижнего колонтитула карты

как

<card>
    <card-header>
    </card-header>
    <card-body>
    </card-body>
    <card-footer>
    </card-footer>
</card>

при импорте представления я ввел помощник с

@addTagHelper *, CardTagHelper

1 Ответ

1 голос
/ 25 июня 2019

Ваша проблема здесь:

@addTagHelper *, CardTagHelper

Эта директива пытается зарегистрировать всех помощников тегов, найденных в сборке CardTagHelper, которая не существует. Ваш помощник по тегам не найден и не запускается, поэтому HTML-код, добавленный в ваши файлы .cshtml, остается нетронутым.

Вам необходимо использовать имя сборки, которая содержит CardTagHelper:

@addTagHelper *, YourFullAssemblyName
...