Asp.net 后台调用js方法

最近碰到一个这样的状况,需要先执行控件服务器的事件然后再执行前端的js事件。因为客户端事件是先与服务器事件执行的,这就需要在需要执行js的地方由后台调用了。

我先使用的是:

this.btnOK.Attributes.Add("onclick", "javascript:btnOK_OnClick();");

出现了一个奇怪的现象,只有在第二次单击按钮后js事件才被执行。当我发现了下面的3段文章后,终于知道错在了哪里。

改成:ClientScript.RegisterStartupScript(ClientScript.GetType(), "onclick", "<script>btnOK_OnClick();</script>");之后,就不会出现那个怪现象了。

 

1. 用Response.Write方法

  代码如下:

  Response.Write("<script type='text/javascript'>alert("XXX");</script>");
  此方法缺陷就是不能调用脚本文件中的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定 义,比如

  Response.Write("<script type='text/javascript'>function myfun(){}</script>"); 

2.用ClientScript类

  代码如下:在想调用某个javascript脚本函数的地方添加代码,注意要保证MyFun已经在脚本文件中定义过了。

  ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>MyFun();</script>");

  这个方法比Response.Write更方便一些,可以直接调用脚本文件中的自定义函数。


3.普通的添加控件的Attributes属性

  对于普通按钮就是:Button1.Attributes.Add("onclick","MyFun();");

  只能在Onload中或类似于onload的初始化过程中添加才有效。而且是先执行脚本函数,无法改变执行顺序。

 

注意,以上所有方法中,后台代码都不能有转化当前页的代码,比如Redirect等,要把转页代码放在脚本里面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值