我正在开发一个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
函数在某些页面上执行,而不是在其他页面上执行?
答案 0 :(得分:1)
我发现了问题,但我仍然不知道解决方案是什么。
我的用户控件Location Selector
位于相对目录~/Controls
中。我使用以下代码注册脚本:
ScriptManager.RegisterClientScriptInclude(this, typeof(LocationSelector), Guid.NewGuid().ToString(), "Controls/LocationSelector.js");
问题在于JavaScript文件Controls / LocationSelector.js的相对路径。
使用此代码的页面都在ASP.net应用程序的根目录中。不起作用的页面位于子目录中。