RegisterClientScriptInclude由于某种原因不起作用

时间:2010-03-24 16:33:54

标签: asp.net javascript ajax scriptmanager

我花了至少两天的时间尝试任何事情,然后使用Google搜索...但由于某种原因,我无法让RegisterClientScriptInclude以其他人的方式工作吗?

首先,我正在使用.NET 3.5 Ajax,...我在我的部分页面刷新中包含了javascript ...使用此代码:

ScriptManager.RegisterClientScriptBlock(this, typeof(Page), "MyClientCode", script, true);

它完美运行,脚本变量中包含的javascript代码包含在每次部分刷新中。

脚本中的javascript实际上相当广泛,我想将它存储在.js文件中,所以逻辑上我创建一个.js文件并尝试使用RegisterClientScriptInclude包含它...但是,我不能为我的生活做到这一点。这是确切的代码:

ScriptManager.RegisterClientScriptInclude(this, typeof(Page), "mytestscript", "/js/testscript.js");

testscript.js文件仅包含在FULL页面刷新中...即。当我加载页面,或做一个完整的回发....我不能让文件包含在部分刷新...不知道为什么..当在firebug中查看ajax POST时我没有看到我是否包含文件的区别......

两个ScriptManager Includes都是从“Page_Load”中的完全相同的位置运行的...所以他们应该执行每次部分刷新(但只有ScriptBlock会这样做)。

无论如何,..任何帮助或想法,或者我可以解决这个问题的其他方法,将不胜感激。

谢谢, 安德鲁

1 个答案:

答案 0 :(得分:1)

这是关键:

  

部分页面刷新

你必须跳过特殊的箍,在初始加载后向页面添加javascript,因为稍后加载javascript被一些人视为安全风险(这对Google索引也是不利的)。

相反,在初始页面加载时注册脚本,直到稍后才执行脚本。如果动态创建这些脚本,我建议您将静态部分和重构分解为可以使用从页面刷新动态返回的信息调用的方法。