阿不

潜水

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  212 随笔 :: 0 文章 :: 3078 评论 :: 107万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

在我之前的一篇POST中(无刷新页面跳转),曾提出一种B/S程序全部无刷新操作的解决方案。它的基本思想就是在UpdatePanel动态加载User Control。也得到了大家的广泛关注,但是很多朋友也担心会出现很多这样那样意想不到的问题,主要是UpdatePanel的兼容性问题。但到目前为止,我在实践过程中,除与部分第三控件(ComponentArt.Web.UI)的兼容问题无法协调外,其它大部分问题都可以得到很好的解决。今天记录一下与AtlasToolKit同时使用时出现的问题以及解决办法。

AtlasToolKit是一个基于Atlas扩展的控件工具开发包,使用简单方便,但是目前也存在一些问题,甚至有朋友建议还是先别用这组ToolKit,但是使用它实在是太方便了,在不产生(或少产生)其它负面影响的场合下,我还是用了。但是也出现了一些问题,记录一下,希望给以后出现同样问题的朋友们提供一些帮助。

问题描述:

我是在用户控件中使用AtlasToolKit的,而用户控件也是通过动态加载到页面的。这样使用的后果就会产生一个错误提示:

Assertion Failed: Unrecognized tag atlascontroltoolkit:collapsiblePanelBehavior

Break into debugger?

出现这个错误的原因是因为没有注册所需的javascript脚本文件。因为在每个Extender都有一段Atrribute声明如下:

    [ClientScriptResource("atlascontroltoolkit", "collapsiblePanelBehavior", typeof(AtlasControlToolkit.CollapsiblePanelExtender), "CollapsiblePanel.CollapsiblePanelBehavior.js")]

那么在页面中,是由ScriptManager来在初始化的时候判断要加载哪些脚本文件的,由于我们的用户控件是晚于页面的ScriptManager初始化的,所以在用户控件引入的AtlasToolKit控件所需要js脚就不会被下载并注册了,AtlasToolKit控件也就无法被使用了。

解决办法:

了解了问题内在缘由,就好办了。它的解决办法就是在页面上引用将可能用到空AtlasToolKit元素,让它能被ScriptManager解析下载并注册,如:

<atlasToolKit:CollapsiblePanelExtender runat="server"></atlasToolKit:CollapsiblePanelExtender>

这样就保证了atlasToolKit:CollapsiblePanelExtender在动态的用户控件能被正常使用了,对于其它的控件也是一样的。

影响:

这样做的一个负面影响就是加长了页面的加载时间了,因为不管在第一个加载的用户控件是否使用到了相应的AtlasToolKit都必须下载它的支持脚本,一定程度上会造成浪费。但是一般情况下,每个ToolKit的支持脚本都还比较小,最大的28K,而且页面也是只加载一次的,还有本身atlas的脚本文件也会客户端缓存。但是有一种最坏的情况是当我们使用了所有的ToolKit的话,那体积还是相当可观的。一种最好的结果是,在未来的版本中AtlasToolKit本身就解决这个问题。

BTW:AtlasToolKit本周将会发布一个基于June CTP atlas的新版本。有在使用的朋友可以关注一下。

posted on   阿不  阅读(1972)  评论(1编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示