使用AJAX.ScriptManager时注册脚本的方法

如果页面中不用Ajax,cs中运行某段js代码方式可以是:
Page.ClientScript.RegisterStartupScript(Page.GetType(), "", "<script>window.open(‘default2.aspx‘)</script>");
如果页面中使用了Ajax ,则上述代码即使执行也无效果。

如果页面中Response.Write(),Page.RegisterStartScript()等方法,会弹出提示信息:

Sys.WebForms.PageRequestManagerErrorException:The message received from the server could not be parsed

对这种情况我们通常采用:
ScriptManager.RegisterStartupScript(this.Button1, this.GetType(), "alertScript", "window.open(‘default2.aspx‘);", true);

 

public static void RegisterStartupScript(
      Control control,
      Type type,
      string key,
      string script,
      bool addScriptTags
  )
参数:
control
类型: System.Web.UI. Control 
正在注册该客户端脚本块的控件。
type 类型: System. Type 该客户端脚本块的类型。通常使用 typeof 运算符 (C#) 或 GetType 运算符 (Visual Basic) 来指定该参数,以检索正在注册该脚本的控件的类型。
key 类型: System. String 该脚本块的唯一标识符。
script 类型: System. String 脚本。
addScriptTags 类型: System. Boolean 如果用
<script></script> 标记括起该脚本块,则为 true;否则为 false。

 


备注:

使用 RegisterStartupScript 方法,可为与部分页面呈现兼容且不具有 Microsoft AJAX Library 依赖项的页面注册启动脚本块。 仅当正在注册该块的控件位于要更新的 UpdatePanel 控件内时,才将通过使用此方法注册的启动脚本块发送到页面。 若要在每次发生异步回发时都注册启动脚本块,请使用该方法的 RegisterStartupScript(Page, Type, String, String, Boolean) 重载。

如果要注册与部分页面更新无关的启动脚本,并且只想在初始页面呈现期间注册一次该脚本,请使用 ClientScriptManager 类的 RegisterStartupScript方法。 可以从页面的 ClientScript 属性获取对 ClientScriptManager 对象的引用。

RegisterStartupScript 方法所呈现的脚本块会在页面完成加载之时、但页面的客户端 onload 事件引发之前执行。 启动脚本块位于呈现的 ASP.NET 页面底部的 </form> 标记之前。

不能保证使用 RegisterStartupScript 注册的启动脚本块按照其注册顺序输出。 如果启动脚本块的顺序很重要,请使用 StringBuilder 对象将脚本块集中到一个字符串中,然后将它们作为单个启动脚本进行注册。  


 

使用样例代码:

//普通ASP.NET应用程序中的应用
ScriptManager.RegisterStartupScript(this.Updatanel1, this.GetType(), "", "alert(‘您是管理员,登录成功!‘);", true);
//在AJAX环境下的应用
ScriptManager.RegisterStartupScript(UpdatePanel1,typeof(UpdatePanel),"scriptname","alert(‘您是管理员,登录成功!‘);",true);

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。