zoukankan      html  css  js  c++  java
  • 无刷新“页面跳转”问题一:与AtlasToolKit协同工作

    在我之前的一篇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的新版本。有在使用的朋友可以关注一下。

  • 相关阅读:
    努力的意义是什么?
    那些成功学和鸡汤文没有告诉你的
    曾国藩:一勤天下无难事
    王健林台大演讲:谁没有艰辛的过往?
    什么样的能量才能支撑一个人走过人生的低谷和迷茫
    想成为大树,就不要和草去比
    马云:不吃苦,你要青春干嘛?
    微博运营要点
    numba学习教程
    机器学习的分类
  • 原文地址:https://www.cnblogs.com/hjf1223/p/443229.html
Copyright © 2011-2022 走看看