向标记助手HTML元素添加类

时间:2019-06-25 06:33:05

标签: c# html asp.net-core asp.net-core-tag-helpers

第一次学习标签助手,但是我从教程中无法理解我应该如何为每个元素定义类?

    [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 个答案:

答案 0 :(得分:1)

您遇到的问题在这里:

@addTagHelper *, CardTagHelper

此伪指令尝试注册CardTagHelper程序集中不存在的所有标记帮助器。找不到您的标记帮助程序,因此也无法运行它,从而使您添加到.cshtml文件中的HTML完全不变。

您需要使用包含的程序集的名称 CardTagHelper

@addTagHelper *, YourFullAssemblyName