Hoo*_*ini 7 asp.net-mvc partial-views viewengine razor
我有一个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>
Run Code Online (Sandbox Code Playgroud)
这就是我在我的菜单中调用Menu PartialView的方式_layout.cshtml:
@Html.Partial("Shared/_Menu", MyApplicationCache.departments)
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我在所有请求上将相同的模型(从缓存)传递给PartialView.
Razor ViewEngine是否有内部缓存系统来识别此视图是否已为此模型构建(符合HTML字符串)?或者它是否在每个请求上重新渲染(重新编译)PartialView?
在PartialView得到重新呈现在每一个请求,假设你没有任何不具有OutputCacheAttribute应用上Controller还是其参与行动的方法。
如果您需要输出缓存,则需要通过 明确设置OutputCacheAttribute,请参阅文档。
您可以通过输出 a 轻松检查这一点DateTime,例如。通过如下所示的菜单项。
在每次请求时,它都会显示一个新值,证明它被重新渲染。
<li><a href="#">@DateTime.Now</a></li>
Run Code Online (Sandbox Code Playgroud)
完整菜单:
@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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |