为什么我的用户控制pageLoad函数不会在我的某些ASP.net页面上触发?

时间:2011-03-10 17:19:16

标签: jquery asp.net ajax updatepanel scriptmanager

我正在开发一个ASP.net应用程序。

我遇到了一个名为LocationSelector的用户控件的问题。它工作得很好,但我无法在ASP:UpdatePanel中使用它。我通过浏览SO了解到,我需要将我的内联javascript放在外部文件中并使用ScriptManager进行注册,以便Javascript中没有Response.Write次调用。

接下来,我发现该控件最初工作,但当我将其封装在ASP:UpdatePanel中时,它将在第一次AJAX回发后停止运行。我读到要解决这个问题,我需要用$(document).ready替换我的function pageLoad()调用,该调用会在每个ASP.net页面加载时自动执行。

我的ASP.net应用程序中的几个页面工作正常(我对框架似乎驱动应用程序的效果印象非常深刻)。但是,令我沮丧的是,我发现我的LocationSelector控件在我的三个页面上不再 。 HTML呈现,但pageLoad(使用jQuery绑定控件上的事件)不会触发。

我对此进行了验证,但将alert('pageLoad');作为pageLoad函数的第一行。在有效的页面上,我看到警报。在不起作用的页面上,即使在初始页面加载时,我也看不到警报。

什么样的问题可能导致我的用户控件pageLoad上的LocationSelector函数在某些页面上执行,而不是在其他页面上执行?

1 个答案:

答案 0 :(得分:1)

我发现了问题,但我仍然不知道解决方案是什么。

我的用户控件Location Selector位于相对目录~/Controls中。我使用以下代码注册脚本:

ScriptManager.RegisterClientScriptInclude(this, typeof(LocationSelector), Guid.NewGuid().ToString(), "Controls/LocationSelector.js");                

问题在于JavaScript文件Controls / LocationSelector.js的相对路径。

使用此代码的页面都在ASP.net应用程序的根目录中。不起作用的页面位于子目录中。