Antwort

1

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> 
Verwandte Themen