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

  • 相关阅读:
    [转]对Lucene PhraseQuery的slop的理解
    Best jQuery Plugins of 2010
    15 jQuery Plugins To Create A User Friendly Tooltip
    Lucene:基于Java的全文检索引擎简介
    9 Powerful jQuery File Upload Plugins
    Coding Best Practices Using DateTime in the .NET Framework
    Best Image Croppers ready to use for web developers
    28 jQuery Zoom Plugins Creating Stunning Image Effect
    VS2005 + VSS2005 实现团队开发、源代码管理、版本控制(转)
    禁止状态栏显示超链
  • 原文地址:https://www.cnblogs.com/hjf1223/p/443229.html
Copyright © 2011-2022 走看看