你好,这是我的标签助手
[HtmlTargetElement("card")]
public class CardTagHelper : TagHelper
{
public string Title { get; set; }
public string Icon { get; set; }
public string Url { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.TagName = "CardTagHelper";
output.TagMode = TagMode.StartTagAndEndTag;
var preContent = new StringBuilder();
preContent.AppendFormat($@"
<div class='card custom-card'>
<div class='card-header'>
<div class='card-title'>");
if (Url != null)
{
preContent.AppendFormat($@"
<a asp-for='{Url}'>
<div class='float-left return'>
<i class='fas fa-arrow-alt-circle-left fa-lg'></i>
</div>
</a>");
}
preContent.AppendFormat($@"<i class='{Icon}'></i>
{Title}
</div>
</div>
<div class='card-body'>");
var postContent = new StringBuilder();
postContent.AppendFormat($@"
</div>
<div class='card-footer'>
</div>
</div>");
output.PreContent.SetHtmlContent(preContent.ToString());
output.PostContent.SetHtmlContent(postContent.ToString());
}
}
}
输出是 bootstrap 4 卡
<card title="myTitle" icon="myIcon" url="redirectUrl">
// Content here
</card>
我的问题是,我想在锚点的条件渲染字符串上使用 asp-page 而不是 href,但是当我添加它时,它没有任何效果或任何可点击的。
EDIT
这些是我的视图导入,正如建议的那样,我尝试在 Asp.Net Core 之前包含我的自定义助手
@using MyProject
@namespace MyProject.Pages
@addTagHelper *, MyProject
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
但是,我没有找到任何文章解释如何在自定义标签帮助程序中使用 Razor 标签帮助程序。但对于我的解决方案,我必须使用实际的“href”标签而不是“asp-for”剃刀标签助手,如下所示。
public string Url { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
var content = $@"<a class='nav-link text-dark' href='/{Url}'>{Title}</a>";
output.TagName = "li";
output.Content.SetHtmlContent(content);
output.Attributes.Add("class", "nav-item");
}
Razor 标签助手的行为与它为您所做的相同,@Jackal。生成的 HTML 如下所示 -
<li class="nav-item"><a class="nav-link text-dark" href="/Index">Home</a></li>
<li class="nav-item"><a class="nav-link text-dark" href="/Restaurants/List">Restaurants</a></li>
希望能帮助到你。谢谢
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)