异步往返之后,将不会运行任何启动脚本,这可能是为什么在AJAX回调后无法启动的原因。颜色选择器可能具有需要在页面加载时执行的功能。
我已经遇到了很多次,以至于我写了一个小方法在后台代码中注册脚本,该方法可以处理异步和非异步往返。基本概要如下:
private void RegisterClientStartupscript(string scriptKey, string scriptText){ scriptManager sManager = scriptManager.GetCurrent(this.Page); if (sManager != null && sManager.IsInAsyncPostBack) { //if a MS AJAX request, use the scriptmanager class scriptManager.RegisterStartupscript(this.Page, this.Page.GetType(), scriptKey, scriptText, true); } else { //if a standard postback, use the standard Clientscript method scriptText = string.Concat("Sys.Application.add_load(function(){", scriptText, "});"); this.Page.Clientscript.RegisterStartupscript(this.Page.GetType(), scriptKey, scriptText, true); }}实际上,我将以上内容烘焙到了基页类中,以便我正在使用的任何页面都可以调用
this.RegisterClientStartupscript(...)。为此,只需创建一个基础页面类并将其包含在其中(确保将受保护的标记为非私有,否则您继承的页面类将无法访问它)。
使用以上代码,无论页面正在执行回发还是回调,我都可以放心地注册客户端脚本。意识到您正在使用外部脚本文件,您可能可以修改上述方法来注册外部脚本,而不是内联。有关更多详细信息,请查阅scriptManager类,因为有几种脚本注册方法…



