首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用LoadControl显示缓存的WebUserControls

使用LoadControl显示缓存的WebUserControls
EN

Stack Overflow用户
提问于 2012-02-15 19:08:44
回答 2查看 660关注 0票数 0

这是我在这里的第一篇文章。

我已经写了一个内容管理系统,它允许开发人员以WebUserControls的形式编写自己的插件。用户可以(通过TinyMCE)将这些插件插入到内容中。这是使用LoadControl方法以编程方式完成的,添加到控件层次结构并设置其属性。到目前为止一切都很好。

我希望允许开发人员在他们的WebUserControls上使用OutputCache,但是这些控件需要通过WebUserControl的属性进行缓存。例如,开发人员编写了一个WebUserControl color.ascx,它具有属性颜色(红色|绿色|蓝色),因此根据该属性的值,缓存可以存储红色、绿色和蓝色版本。

我遇到的问题是,一个页面上可能有多个动态加载LoadControl的color.ascx控件(红色、绿色和蓝色)。在缓存之后,LoadControl方法正确地返回一个PartialCachingControl,但当刷新页面时,它总是缓存中的最后一个版本,即页面显示3Blue而不是红、绿和蓝。

有没有办法使用LoadControl (或通过其他方式)从缓存中加载正确的版本,即使用颜色属性,以及我应该如何使用OutputCache来确保基于WebUserControls属性将其保存到缓存中?

谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2012-02-16 15:59:24

看起来,您遇到了一个典型的LoadControl缓存问题。从程序中的相同位置(例如for -each循环)调用,对于相同的控件,如果需要缓存,此函数将始终返回相同的实例。为了避免这种情况,在您的情况下,只需在应用程序中进行3个不同的调用-3个不同的代码行

票数 0
EN

Stack Overflow用户

发布于 2012-04-13 04:34:09

我设法使用DynamicMethod解决了这个问题。完整的描述和代码可以在我解决它后写的博客文章中找到:

http://www.tommycode.se/2012/04/outputcache-on-dynamically-loaded.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9292199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档