如何订购由ScriptManager的Register Script注册的脚本

4
我希望提醒您,在注册脚本时按照以下顺序进行:1。请注意,保留HTML标记,但不要添加解释。
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "a", "alert(a);", true);
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "b", "var a = 1;", true);

但这样做会导致出现“a未定义”的错误。

我在页面的不同部分有不同的控件注册了脚本,其中一些需要先执行,而另一些则需要最后执行。

有没有一种设置它呈现顺序的方法?

1个回答

3
不,无法定义调用RegisterClientScriptBlock方法的顺序。根据ScriptManager.RegisterClientScriptBlock方法的文档(重点是我的):

不能保证输出脚本块的顺序与注册顺序相同。如果脚本块的顺序很重要,则使用StringBuilder对象将所有脚本收集到单个字符串中,然后在单个客户端脚本块中注册它们。

此外,您可能需要为第二次调用RegisterStartupScriptBlock定义不同的键(第二个参数;"a"),因为已注册的脚本通过其键唯一标识。如果使用您的参数调用此方法,ScriptManager不会注册第二个脚本,因为已经注册了另一个具有相同键("a")的脚本。


a键是复制粘贴错误,已经修正。谢谢。 - BrunoLM

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接