关于在.net1.1中使用RegisterClientScriptBlock()注册脚本的显示顺序的BUG

症状

当您使用 RegisterClientScriptBlock() 方法可添加更多然后八个客户端脚本块到页时,脚本块不会被添加您注册其顺序。 同样,使用 RegisterStartupScript() 向多然后八个客户端脚本块到页时, 脚本块不会被添加您注册其顺序。 如果客户端脚本的执行依赖于脚本块注册的顺序,然后在客户端脚本可能会不行为像您期望的那样。

注意 您可以保留注册顺序最多 16 个客户端脚本块。 为此,使用八 RegisterClientScriptBlock() 方法和 8 RegisterStartupScript() 方法。

回到顶端

原因

已注册的脚本块位于 HybridDictionary 对象类。 如果有八个或更少的客户端脚本块,然后 HybridDictionary 实现与 ListDictionary 类集合中存储该项目。 当集合的大小增长到超过八个项目, HybridDirectory 切换到一个 哈希表 表。 ListDictionary 维护添加的项,顺序,以便按顺序检索项。 但是, 哈希表 不维护该集合中项的注册的顺序。 因此,注册的串行顺序不会发生在客户端脚本的插入。

回到顶端

解决方案

若要解决此问题,向 StringBuilder 方法,添加所有客户端脚本块,然后注册为一个脚本块在 StringBuilder

你可能感兴趣的:(关于在.net1.1中使用RegisterClientScriptBlock()注册脚本的显示顺序的BUG)