Partial标签助手底层调用的是RenderPartialAsync还是PartialAsync?
ASP.NET Core Partial标签助手底层实现逻辑解答
首先明确结论:ASP.NET Core 内置的 <partial> 分部视图标签助手,底层实际调用的是RenderPartialAsync方法,而非PartialAsync,该结论可通过ASP.NET Core官方开源的运行时代码逻辑验证。
两者的性能差异及标签助手的实现细节如下:
- 两个方法的核心差异:
PartialAsync返回IHtmlContent类型对象,渲染过程中会将分部视图的全部输出内容先缓存到内存缓冲区,待渲染完成后再整体写入父视图的输出流,会产生额外的内存拷贝开销RenderPartialAsync返回Task类型,渲染过程中直接将生成的内容写入父视图的输出流,无需额外的全量内存缓存,性能和内存占用表现更优
<partial>标签助手的执行逻辑:标签助手在触发渲染时,会直接调用IHtmlHelper接口提供的RenderPartialAsync方法,将分部视图的渲染内容直接写入当前视图的Output输出缓冲区,完全继承了RenderPartialAsync的低开销特性。
如果是手动编码调用分部视图的场景,优先选择RenderPartialAsync即可获得和标签助手一致的性能表现,示例写法如下:
@{ await Html.RenderPartialAsync("你的分部视图名称", 可选的视图模型); }
内容的提问来源于stack exchange,提问作者Learning
相关产品推荐
相关产品推荐

