gpt4 book ai didi

c# - 是否可以从自定义 TagHelper 调用 ViewComponent?

转载 作者:行者123 更新时间:2023-12-04 00:05:56 24 4
gpt4 key购买 nike

我正在编写一个自定义 TagHelper 并希望在其中呈现一个 ViewComponent。
类似于 vc:xyz 标记助手所做的事情,但以一种更可控的方式,以便我可以在运行时确定要渲染哪个 ViewComponent。

是否可以?

最佳答案

为此,您需要将 IViewComponentHelper 注入(inject)到您的 TagHelper 中,对其进行上下文化,然后根据您的应用程序逻辑使用它来呈现任何 ViewComponent。这是一个简单的说明:

[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);
}
}

另外,请记住,自闭合标签不起作用:
<widget name="abc" />

请改用此表格:
<widget name="abc"></widget>

关于c# - 是否可以从自定义 TagHelper 调用 ViewComponent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44913297/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com