gpt4 book ai didi

asp.net-mvc - ASP.NET MVC 3 中的嵌套部分输出缓存

转载 作者:行者123 更新时间:2023-12-01 18:59:40 24 4
gpt4 key购买 nike

我在 ASP.Net MVC 3 RC 2 中使用 Razor View 引擎。这是我 View 的一部分city.cshtml

(为了示例简单起见,大大简化了代码)

<!-- in city.cshtml -->
<div class="list">
@foreach(var product in SQL.GetProducts(Model.City) )
{
<div class="product">
<div>@product.Name</div>
<div class="category">
@foreach(var category in SQL.GetCategories(product.ID) )
{
<a href="@category.Url">@category.Name</a> »
}
</div>
</div>
}
</div>

我想使用 OutputCache 属性缓存这部分输出,因此我创建了一个启用了 OutputCache 属性的操作 ProductList

<!-- in city.cshtml -->
<div class="list">
@Html.Action("ProductList", new { City = Model.City })
</div>

我在 ProductList.cshtml 中创建了 View ,如下所示

<!-- in ProductList.cshtml -->
@foreach(var product in Model.Products )
{
<div class="product">
<div>@product.Name</div>
<div class="category">
@foreach(var category in SQL.GetCategories(product.ID) )
{
<a href="@category.Url">@category.Name</a> »
}
</div>
</div>
}

但我仍然需要缓存每个产品的类别路径输出。所以我创建了一个启用了 OutputCache 属性的操作 CategoryPath

<!-- in ProductList.cshtml -->
@foreach(var product in Model.Products ){
<div class="product">
<div>@product.Name</div>
<div class="category">
@Html.Action("CategoryPath", new { ProductID = product.ID })
</div>
</div>
}

但显然这是不允许的。我收到此错误:

OutputCacheAttribute is not allowed on child actions which are children of an already cached child action.

我相信他们有充分的理由禁止这样做。我真的想要这种嵌套输出缓存

有解决方法吗?

最佳答案

我们遇到了类似的问题,并发现我们实际上根本不需要嵌套的部分输出缓存。一旦我们缓存了父对象,就不会再次调用子对象,直到父对象的缓存过期为止。

因此,我的建议可能是:缓存父级,子级将已被处理。

关于asp.net-mvc - ASP.NET MVC 3 中的嵌套部分输出缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4541860/

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