检查RenderPartial执行之前/之后的条件

本文关键字:之后 条件 RenderPartial 执行 检查 | 更新日期: 2023-09-27 18:12:16

假设有一个RenderPartial检查某个条件是否为真,然后呈现页面。

先检查条件,然后调用RenderPartial是否有性能上的好处?我确信这种技术对RenderAction的性能有好处,因为我们基本上可以在MVC生命周期步骤中短路。但我在想,既然RenderPartial"直接"进入视图,它可能没有同样的好处。


示例(检查RenderPartial中的条件):


myPage.cshtml

@model Namespace.AdObject
@{ Html.RenderPartial("~/Views/Ad.cshtml", Model); }

~/视图/Ad.cshtml

@model Namespace.AdObject
@if (Model != null && Model.AdScript != null)
{
    // render the ad
}

示例(检查RenderPartial之前的条件):


myPage.cshtml

@model Namespace.AdObject
@if (Model != null && Model.AdScript != null)
{
    Html.RenderPartial("~/Views/Ad.cshtml", Model);
}

~/视图/Ad.cshtml

@model Namespace.AdObject
// render the ad

检查RenderPartial执行之前/之后的条件

RenderPartial()是一个void方法,用于写入响应输出流。通过执行部分视图生成的HTML输出被呈现到调用视图(或父视图)中。即使模型是null,写也会很耗时,降低效率。因此,在RenderPartial之前检查条件在性能方面更好。

我会说检查之前的RenderPartial调用是更好的。即使您的Partial视图很小,它仍然需要从Web服务器对.cshtml文件进行额外的文件系统IO调用,这是性能的瓶颈。当你先检查时,你可以避免所有的IO调用。