Um dies zu tun, müssen Sie IViewComponentHelper in Ihren TagHelper injizieren, kontextualisieren und dann verwenden, um eine ViewComponent abhängig von Ihrer Anwendungslogik zu rendern. Hier ist eine kurze Darstellung:
[HtmlTargetElement("widget", Attributes = WidgetNameAttributeName)]
public class WidgetTagHelper : TagHelper
{
private const string WidgetNameAttributeName = "name";
private readonly IViewComponentHelper _viewComponentHelper;
public WidgetTagHelper(IViewComponentHelper viewComponentHelper)
{
_viewComponentHelper = viewComponentHelper;
}
[HtmlAttributeNotBound]
[ViewContext]
public ViewContext ViewContext { get; set; }
[HtmlAttributeName(WidgetNameAttributeName)]
public string Name { get; set; }
public override async Task ProcessAsync(TagHelperContext context, TagHelperOutput output)
{
((IViewContextAware)_viewComponentHelper).Contextualize(ViewContext);
var content = await _viewComponentHelper.InvokeAsync(typeof(WidgetViewComponent), new { name = Name });
output.Content.SetHtmlContent(content);
}
}
Auch im Auge behalten, dass selbst schließende Tags werden nicht funktionieren:
<widget name="abc" />
Verwenden Sie dieses Formular statt:
<widget name="abc"></widget>