我有一个 2 级菜单项:我有一个部门列表,每个部门都有一个商店列表。
我有一个 Menu,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>
这就是我在我的菜单中调用 Menu PartialView 的方式_layout.cshtml
:
@Html.Partial("Shared/_Menu", MyApplicationCache.departments)
正如您所看到的,我在所有请求上将相同的模型(从缓存)传递到 PartialView。
Razor ViewEngine 是否有一个内部缓存系统来识别该视图已经为此模型构建(符合 HTML 字符串)?或者它是否会在每个请求上重新渲染(重新编译)PartialView?
The PartialView
假设您没有任何请求,则会在每个请求时重新渲染OutputCacheAttribute
应用于Controller
或其所涉及的动作方法。
如果您需要输出缓存,则需要通过显式设置OutputCacheAttribute
,参见文档 https://learn.microsoft.com/en-us/aspnet/mvc/overview/older-versions-1/controllers-and-routing/improving-performance-with-output-caching-cs.
您可以通过输出轻松检查这一点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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)