我有一个在用户控件中输出缓存的项目列表。如果管理员已登录,我想为每个项添加一个删除按钮。
没有输出缓存我检查当前用户是否是管理员角色的成员并相应地显示/隐藏按钮。由于列表现在是输出缓存的,我不能这样做。
我查看了替换控件,但首先它返回一个字符串而不是一个完整的控件,其次它是一个静态方法,所以我无法访问ItemId,我已将其作为属性添加到每个项目中在列表中。
将删除按钮添加到列表中的正确方法是什么?
更新 我已经尝试将以下内容添加到我的页面的page_load以及用户控件中:
this.Response.DisableKernelCache();
HttpCacheValidateHandler val = new HttpCacheValidateHandler(ValidateCache);
this.Response.Cache.AddValidationCallback(val, null);
和
public static void ValidateCache(HttpContext context, Object data, ref HttpValidationStatus status)
{
if (context.User.IsInRole("administrator"))
status = HttpValidationStatus.Invalid;
else
status = HttpValidationStatus.Valid;
}
我用以下内容修饰了我的用户控件:
[PartialCaching(3600, VaryByCustom = "Page", VaryByParams = "paging")]
我使用开源CMS Umbraco创建网站,因此VaryByCustom =“Page”会根据CMS中的当前文档节点来更改缓存。 VaryByParams =“paging”通过“paging”-urlparameter(列表中的page1,page2等)改变列表
永远不会调用ValidateCache方法。