Razor MVC6 ViewComponents RenderInvoke()与Invoke()的比较
我不理解IViewComponentThelper.RenderInvoke的用途,因为它返回voidRazor 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
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(...);
}
总而言之<代码