检查RenderPartial性能之前/之后的条件

时间:2016-10-07 19:19:40

标签: c# asp.net asp.net-mvc asp.net-mvc-4 razor

我们假设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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

我想说在RenderPartial调用之前检查更好。即使您的部分视图很小,它仍然归结为从Web服务器对.cshtml文件的额外文件系统IO调用,这是性能的瓶颈。首先检查时,可以一起避免IO调用。