Razor MVC6 ViewComponents RenderInvoke()与Invoke()的比较

Razor MVC6 ViewComponents RenderInvoke()与Invoke()的比较,razor,asp.net-core,asp.net-core-mvc,Razor,Asp.net Core,Asp.net Core Mvc,我不理解IViewComponentThelper.RenderInvoke的用途,因为它返回void Invoke方法将在我的视图中呈现一个html字符串,这就是我始终用来呈现MVC6 ViewComponent的内容。Invoke和RenderInvoke之间的区别在于它们的返回值以及它们的结果如何到达最终输出 使用@Component.Invoke(…)可以执行视图组件并将值呈现给页面。或者,您也可以这样做: @{ HtmlString myHtmlString = Compone

我不理解IViewComponentThelper.RenderInvoke的用途,因为它返回void


Invoke方法将在我的视图中呈现一个html字符串,这就是我始终用来呈现MVC6 ViewComponent的内容。

Invoke和
RenderInvoke
之间的区别在于它们的返回值以及它们的结果如何到达最终输出

使用
@Component.Invoke(…)
可以执行视图组件并将值呈现给页面。或者,您也可以这样做:

@{
    HtmlString myHtmlString = Component.Invoke(...);
}
这可能很有用,因为在将
Invoke
调用写入结果流之前,您可以检查该调用的输出。在
@Component.Invoke(…)
的情况下,输出被转换为
HtmlString
,然后让页面将其写入结果流

现在查看
RenderInvoke
<代码>组件。RenderInvoke(…)无法在Razor页面中使用前面的
@
写入,因为它的返回值(
void
)。此方法的目的是:我不需要任何中间值(
HtmlString
),只需将其直接写入结果流(
ViewContext.Writer
)。因此,您将始终以类似以下格式使用
RenderInvoke

@{
    Component.RenderInvoke(...);
}
总而言之<代码>调用用于方便您编写
@Component.Invoke(…)
时,或者用于通过将值保存到变量来检查值
RenderInvoke
所做的工作最少,不创建
HtmlString
并直接写入最终输出;当您想在
@functions{…}
块中渲染
ViewComponents
时,它也很方便:

@functions
{
    public void SomeUtility()
    {
        ...
        Component.RenderInvoke(...);
        ...
    }
}

希望这有帮助

Invoke和
RenderInvoke
之间的区别在于它们的返回值以及它们的结果如何到达最终输出

使用
@Component.Invoke(…)
可以执行视图组件并将值呈现给页面。或者,您也可以这样做:

@{
    HtmlString myHtmlString = Component.Invoke(...);
}
这可能很有用,因为在将
Invoke
调用写入结果流之前,您可以检查该调用的输出。在
@Component.Invoke(…)
的情况下,输出被转换为
HtmlString
,然后让页面将其写入结果流

现在查看
RenderInvoke
<代码>组件。RenderInvoke(…)无法在Razor页面中使用前面的
@
写入,因为它的返回值(
void
)。此方法的目的是:我不需要任何中间值(
HtmlString
),只需将其直接写入结果流(
ViewContext.Writer
)。因此,您将始终以类似以下格式使用
RenderInvoke

@{
    Component.RenderInvoke(...);
}
总而言之<代码>调用用于方便您编写
@Component.Invoke(…)
时,或者用于通过将值保存到变量来检查值
RenderInvoke
所做的工作最少,不创建
HtmlString
并直接写入最终输出;当您想在
@functions{…}
块中渲染
ViewComponents
时,它也很方便:

@functions
{
    public void SomeUtility()
    {
        ...
        Component.RenderInvoke(...);
        ...
    }
}

希望这有帮助

Invoke和
RenderInvoke
之间的区别在于它们的返回值以及它们的结果如何到达最终输出

使用
@Component.Invoke(…)
可以执行视图组件并将值呈现给页面。或者,您也可以这样做:

@{
    HtmlString myHtmlString = Component.Invoke(...);
}
这可能很有用,因为在将
Invoke
调用写入结果流之前,您可以检查该调用的输出。在
@Component.Invoke(…)
的情况下,输出被转换为
HtmlString
,然后让页面将其写入结果流

现在查看
RenderInvoke
<代码>组件。RenderInvoke(…)无法在Razor页面中使用前面的
@
写入,因为它的返回值(
void
)。此方法的目的是:我不需要任何中间值(
HtmlString
),只需将其直接写入结果流(
ViewContext.Writer
)。因此,您将始终以类似以下格式使用
RenderInvoke

@{
    Component.RenderInvoke(...);
}
总而言之<代码>调用用于方便您编写
@Component.Invoke(…)
时,或者用于通过将值保存到变量来检查值
RenderInvoke
所做的工作最少,不创建
HtmlString
并直接写入最终输出;当您想在
@functions{…}
块中渲染
ViewComponents
时,它也很方便:

@functions
{
    public void SomeUtility()
    {
        ...
        Component.RenderInvoke(...);
        ...
    }
}

希望这有帮助

Invoke和
RenderInvoke
之间的区别在于它们的返回值以及它们的结果如何到达最终输出

使用
@Component.Invoke(…)
可以执行视图组件并将值呈现给页面。或者,您也可以这样做:

@{
    HtmlString myHtmlString = Component.Invoke(...);
}
这可能很有用,因为在将
Invoke
调用写入结果流之前,您可以检查该调用的输出。在
@Component.Invoke(…)
的情况下,输出被转换为
HtmlString
,然后让页面将其写入结果流

现在查看
RenderInvoke
<代码>组件。RenderInvoke(…)无法在Razor页面中使用前面的
@
写入,因为它的返回值(
void
)。此方法的目的是:我不需要任何中间值(
HtmlString
),只需将其直接写入结果流(
ViewContext.Writer
)。因此,您将始终以类似以下格式使用
RenderInvoke

@{
    Component.RenderInvoke(...);
}
总而言之<代码