如何在ScriptManager.RegisterStartupScript中使用外部js文件?

问题描述:

我有一个更新面板上的控件。每次更新updatepanel时,我都想运行我的JavaScript代码。如何在ScriptManager.RegisterStartupScript中使用外部js文件?

我用这样的:

ScriptManager.RegisterStartupScript(this, GetType(), "my_script", "runFunction();", true); 

的问题是,我的js代码是巨大的,我希望把它放在js文件,并从文件中使用它。我应该在我的代码中更改哪些内容?

你可以使用ScriptManager.RegisterClientScriptInclude方法:

ScriptManager.RegisterClientScriptInclude(updatePanel, updatePanel.GetType(), "a_key", "myScript.js"); 

注意,此方法将在HTML渲染早期的脚本,让你的脚本不应依赖的顺序脚本在页面上呈现。

更多关于这种方法在http://msdn.microsoft.com/pt-br/library/bb337005.aspx


但是,如果你的脚本取决于一些其他的,更好的选择是使用ScriptManager.RegisterStartupScript方法,但而不是通过脚本的身体,你要传递整个<script>标签用你的脚本地址:

ScriptManager.RegisterStartupScript(updatePanel, updatePanel.GetType(), "a_key", "<script type='text/javascript' src='my_script.js'></script>", false); 

注意,最后一个参数,这台addScriptTags标志被设置为false,让您渲染定义的src属性整个标签。

+0

我改变了代码根据您的建议,但奇怪的事情,现在我得到错误在我的JS文件 - 对象的预期。在他同时,当我通过js代码像一个字符串它的确定。 – user1178399 2012-03-30 08:33:01

+0

@ user1178399,看起来你的脚本依赖于在它之后被渲染的其他脚本(因此,你所依赖的对象还没有被创建)。看到上面补充的答案知道该怎么做。 – Raphael 2012-03-30 12:10:29

+0

不错,至少你最后的解释阻止我进一步搜索网络寻找解决方案。 – karlis 2013-07-28 11:11:03