我有一个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
建议立即注册所有相关脚本。在我的情况下这是不可能的,因为脚本在不同的用户控件中。
有没有人遇到过这个问题的解决方案?
答案 0 :(得分:0)
ASP.NET中的控件模型旨在使您的代码完全封装。每个控件应独立于其他控件运行,而不依赖于加载顺序(理想情况下甚至不依赖于存在)。你应该重新考虑你的方法。
答案 1 :(得分:0)
我不明白为什么会这样,但我的观点是这样的:
我认为您应该通过方法公开子控件的脚本。在父控件中按照您想要的顺序连接它们,然后在一个地方注册您的页面。