最近将以前做的一个项目进行了大的修改,页面使用AJAX进行无刷新改动,改完后发现原来程序中Response.Write("")都不能使用,后来找到一种方法,
可以使用 System.Web.UI.ScriptManager.RegisterStartupScript(Contrl control, Type type,string key,string script, bool addScriptTags)来达到相应的目的。
其中control是引起回发事件的控件ID,type客户端脚本类型,key脚本块标识,script要执行的脚本程序,addScriptTags 如果为true 则前面的脚本语句中不需要加标识若为false 则要写出完整的脚本语句实例:
ScriptManager.RegisterStartupScript(btnadd, this.GetType(), "ShowMessage", "alert('成功');",true)
或者另外种方法可以用HttpContext.Current.Handler来代替controlID,不过使用前需要转化为System.Web.UI.Page.
实例:
ScriptManager.RegisterStartupScript((System.Web.UI.Page)HttpContext.Current.Handler, this.GetType(), "ShowMessage", "alert('成功');", true);
在AJAX支持的网站中使用想使用Response.Wrie(“”); 或 Page. RegisterStartupScript (); 弹出一些提示对话框,没有效果。有如下解决方法:
(1) System.Web.UI.ScriptManager.RegisterStartupScript来替代Page.ClientScript.RegisterStartupScript
函数原型:
System.Web.UI.ScriptManager.RegisterStartupScript(Contrl control, Type type,string key,string script, bool addScriptTags);
参数:
control-----------------要要注册此段javascript语句的控件ID,如下面示例的按钮ID btnUnReport
type--------------------这个参数是注册脚本块控件的类型,即updatepanel的类型。一般直接用this.GetType()即可
key---------------------为要执行的javascirpt语句起的名字,可以随便起,类似控件的name属性
script------------------javascript语句
addScriptTags------为true时,前边的script参数可以不用再写javascript标签;为false,则需自己为script参数添加<script language=’javascript’></script>标签。
注:要多传一个Control参数,如果这个control在UpdatePanel里,则运行脚步,如果这个control不在UpdatePanel则不允许这段脚步。
例如:
System.Web.UI.ScriptManager.RegisterStartupScript(btnTestthis.GetType(), "test", "alert(''test'');window.close();", true);