ASP.NET AJAX pageLoad()没有触发(以前:"使用StyleSheetTheme,使用Theme?")

时间:2014-05-06 13:53:13

标签: asp.net ajax pageload

已更新 - 标题已更改b / c StyleSheetThemeTheme与此无关 - 有关详细信息,请参阅答案。

我正在处理一个页面,该页面已经过了几年和几个中间阶段,从另一个成功使用AJAX pageLoad()函数的页面开始,完全执行某些(重新)初始化部分回发。

此新页面上的pageLoad()未触发。对这两个页面(.aspx.js文件)进行系统比较,最终导致我出现了令人惊讶的(对我而言)导致失败的差异:旧页面{{1指令指定了@ Page,而新页面的指令指定了Theme="foo"。将StyleSheetTheme更改为Theme可恢复触发StyleSheetTheme="foo"功能。

在这个新页面中,我可以使用(不可覆盖的)主题设置,因此我实际上没有需要在此momemt中解决的问题,但我认为这种行为并不明显,值得注意,如果有人深入了解StyleSheetTheme可能阻止pageLoad()解雇的原因,我想知道。

1 个答案:

答案 0 :(得分:0)

对问题中引用的页面以及其他类似页面的进一步调查显示,该问题与在StyleSheetTheme指令的Theme@ Page属性之间进行更改无关。我更改了问题/标题以反映这一点。

我正在处理的特定Javascript文件中没有触发pageLoad()函数的实际原因是在页面使用的单独Javascript文件中已经定义了另一个pageLoad()函数,并且 it 是正在执行的那个,因为它后来被包含并且过度/替换了我正在处理的那个。我发现这是使用脚本调试器,通过在ScriptResource.axd文件中找到pageLoad处理(在函数Sys $ _Application $ raiseLoad()中),然后执行到第二个,重载脚本文件... Palm,遇见前额.. 。

外卖点:

  • 只有一个pageLoad()可以在页面级别运行,而无需采用某种方案来菊花链式连接多个脚本;我选择了this approach,因此我的每个脚本文件都可以将自己的(重新)初始化添加到链中,而不会破坏已存在的任何内容
  • 使用StyleSheetTheme属性与Theme属性 nothing 来处理我的问题
  • 尝试(甚至更多)小心确保在发布到SO之前进行清晰和干净的测试...我我已经对页面指令属性进行了简单的A / B测试它已经解决了这个问题,但是在发现了真正的原因之后,我回过头来回顾一下屏幕截图(我用于时间跟踪)并发现我之前做过两次更改,而不只是一次观察行为的变化。这是其他更改(从我的页面删除另一个Javascript文件)修复了它,但在更改和最终测试之间的中断期间,我忘记了我已经完成了它