2010-03-25 48 views

回答

6

ClientScriptManager是你正在寻找的它有一套RegisterClientScriptxxx方法来注册字符串/包括文件/资源​​等作为客户端脚本块。这些方法中的每一个都带有一个键和可选类型的参数,每个键/类型的脚本只包含一次。

在用户控件的onload或OnInit中你要像下面

Page.ClientScriptManager.RegisterClientScriptInclude(typeof(MyUserControl), "myscript", @"/path/to/my/script.js"); 

呼叫无论用户控制多少实例在页面脚本只会被包含一次。

顺便说一句,Page.RegisterClientScriptxxx方法现在不推荐使用,ClientScriptManager是首选。

+0

感谢 - 自从我参与ASP.NET以来已经有好几年了;可能应该检查这种变化。 – 2010-03-26 13:26:03

0

我建议您将javascript源代码与控件分开,然后在加载控件两次之前加载JavaScript一次。

1

我假设这是ASP.NET。如果是这样,在你的代码中,你调用RegisterClientScriptBlock并传递一个密钥。但是在通话之前,您可以调用IsClientScriptRegistered来检查该密钥是否已经注册。这样,只有添加的第一个用户控件才会注册它的javascript,所以它只会被添加到页面一次。