gpt4 book ai didi

asp.net-mvc - Razor View 引擎是否缓存呈现的 HTML?

转载 作者:行者123 更新时间:2023-12-04 11:33:21 25 4
gpt4 key购买 nike

我有一个 2 级菜单项:我有一个部门列表,每个部门都有一个商店列表。

我有一个菜单 PartialView,它遍历 Model (部门)并建立菜单:

@model IEnumerable<Department>

<ul>
@foreach (var department in Model)
{
<li>
<a href="#">@Model.DepartmentName</a>
<ul>
@foreach (var store in department.Stores)
{
<li><a href="some-url">@store.StoreName</a></li>
}
</ul>
</li>
}
</ul>

这就是我在 _layout.cshtml 中调用 Menu PartialView 的方式:
@Html.Partial("Shared/_Menu", MyApplicationCache.departments) 

正如您所看到的,我在所有请求上都将相同的模型(从缓存中)传递给 PartialView。

Razor ViewEngine 是否有一个内部缓存系统来识别这个 View 已经为这个模型构建(符合 HTML 字符串)?或者它是否在每个请求上重新渲染(重新编译)PartialView?

最佳答案

PartialView假设您没有任何 OutputCacheAttribute,在每次请求时都会重新渲染应用于 Controller或者涉及的 Action 方法。

如果你需要输出缓存,你需要通过 OutputCacheAttribute 显式设置它,见 documentation .

您可以通过输出 DateTime 轻松检查这一点。 ,例如。通过如下所示的菜单项。
在每次请求时,它都会显示一个新值,证明它被重新渲染。

<li><a href="#">@DateTime.Now</a></li>

完整菜单:
@model IEnumerable<Department>

<ul>
@foreach (var department in Model)
{
<li>
<a href="#">@Model.DepartmentName</a>
<ul>
<li><a href="#">@DateTime.Now</a></li>
@foreach (var store in department.Stores)
{
<li><a href="some-url">@store.StoreName</a></li>
}
</ul>
</li>
}
</ul>

关于asp.net-mvc - Razor View 引擎是否缓存呈现的 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53494349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com