关于用户控件缓存的问题.

我创建了一个用户控件UserControl_A,在该用户控件放了一个Repeater控件Repeater_A。然后设置该控件的缓存
<%@ OutputCache Duration="60" VaryByParam="none" VaryByCustom="browser" %>

然后我在页面A.aspx中调用该用户控件UserControl_A,第一次加载正常,但再刷新就报UserControl_A等于null的错误,请问应该怎么解决。

不加控件缓存是正常的,不管怎么刷新都没有问题。
...全文
99 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用楼主 wggfcusmq 的回复:]
然后我在页面A.aspx中调用该用户控件UserControl_A[/Quote]

你怎样调用?
子夜__ 2011-07-20
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
同样的原因,比如说你使用 .LoadControl 方法来动态装载用户控件,你会发现它定义的返回类型是 Control 而不是 UserControl。这是因为它有可能返回一个Usercontrol对象,也有可能返回一个 PartialCachingControl对象。所以假设要动态装载一个可能缓存的用户控件,需要判断 LoadControl 返回的对象,才操作。例如
var ctrl = this.LoadControl("~/ui/control1.ascx");
if(ctrl is UserControl) //或者 if(!(ctrl is BasePartialCachingControl)
{
.....
}
  • 打赏
  • 举报
回复
你首先可以参考这些:http://www.google.com.hk/search?q=asp.net+PartialCachingControl&hl=zh-CN&newwindow=1&safe=strict&rlz=1I7GGLD_zh-CN&prmd=ivns&source=lnt&tbs=lr:lang_1zh-CN%7Clang_1zh-TW&lr=lang_zh-CN%7Clang_zh-TW&sa=X&ei=J7clToz4DcuMmQXA8_ySCg&ved=0CAcQpwUoAQ&biw=1308&bih=684

当用户控件自动进行缓存时,你去“调用它”,结果是null。实际上asp.net会在原来需要用户控件的地方,另外装入一个PartialCachingControl控件,来替代目标用户控件。而目标用户控件被删除了。

我不知道你要怎样“调用”它。要想修改你代码中的bug,只要加入判断它是不是null就行了。
快乐的小二兔 2011-07-19
  • 打赏
  • 举报
回复
在控件上下断点。查看是否获得了某些数据

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧