RegisterStartupScript和多个控件

时间:2009-02-18 21:03:56

标签: asp.net

我有一个parentUserControl来加载childUserControl。将parentUserControl的多个实例(例如3个)添加到主机页面。

在parentUserControl的PageLoad上,我注册了JS:

ScriptManager.RegisterStartupScript(this, typeof(Page), keyJSLoadBegin, "OnParentLoad();", true);

在hte childUserControl的PageLoad上,我注册了JS:

ScriptManager.RegisterStartupScript(this, typeof(Page), keyJSLoadBegin, "OnChildLoad();", true);

导航到页面时出现JS错误。导致此错误的行是(在查看源代码中):

`OnParentLoad('parentA');OnChildLoad('childA');OnParentLoad('parentB');
OnParentLoad('parentC')`;OnChildLoad('childC');OnChildLoad('childB')

显然,这些电话无序。

任何人都知道为什么?

修改

问题似乎与此处的错误有关: http://support.microsoft.com/kb/817032

建议立即注册所有相关脚本。在我的情况下这是不可能的,因为脚本在不同的用户控件中。

有没有人遇到过这个问题的解决方案?

2 个答案:

答案 0 :(得分:0)

ASP.NET中的控件模型旨在使您的代码完全封装。每个控件应独立于其他控件运行,而不依赖于加载顺序(理想情况下甚至不依赖于存在)。你应该重新考虑你的方法。

答案 1 :(得分:0)

我不明白为什么会这样,但我的观点是这样的:

我认为您应该通过方法公开子控件的脚本。在父控件中按照您想要的顺序连接它们,然后在一个地方注册您的页面。