Привет, это мой помощник по тегам
[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-страницу вместо href в условной отображаемой строке для привязки, но когда я ее добавил, это не повлияло на нее или не было интерактивным.
ИЗМЕНИТЬ
Это мои viewimports, как и предполагалось, я попытался включить свой собственный помощник до Asp.Net Core.
@using MyProject
@namespace MyProject.Pages
@addTagHelper *, MyProject
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
_ViewImports.cshtml
. Это означает, что встроенные помощники уже работали до того, как этот код появился. Ссылка на вашу библиотеку сначала должна решить эту проблему. Тем не менее, лучше не полагаться на другие помощники тегов именно по этой причине: слишком легко что-то сломать. - person Chris Pratt   schedule 25.06.2019