【转】 C#后台调用前台javascript的五种方法

第一种,OnClientClick    (vs2003不支持这个方法)
<asp:ButtonID="Button1" runat="server" Text="Button"  OnClientClick="client_click()"OnClick="Button1_Click"  />
client_click()就是javascript的一个方法。

例如:

 <script type="text/javascript">

        functionaa() {

            alert("aaa");

            returnfalse;  //返回false 就不执行button的后台代码

        }

    </script>

==================

    <p><asp:Button ID="button11" runat="server" Text="button" OnClientClick="returnaa();"

            οnclick="button11_Click"  /> </p>

==========================================================

第二种,Button1.Attributes.Add("onclick","return Client_Click()");  
“Client_Click() “是一个前台方法,可以替换成一般的脚本如:retrunconfirm('确定删除吗?')

第三种,是我自认为最灵活的一种,ClientScript.RegisterStartupScript
例子:StringBuildersb = new StringBuilder();
        sb.Append("<scriptlanguage='javascript'>");
        sb.Append("Button2_onclick('"+ serverPath + "')");
        sb.Append("</script>");
       ClientScript.RegisterStartupScript(this.GetType(), "LoadPicScript",sb.ToString());

第四种. 用Response.Write方法写入脚本

比如在你单击按钮后,先操作数据库,完了后显示已经完成,可以在最后想调用的地方写上
Response.Write("<scripttype='text/javascript'>alert();</script>");

这个方法有个缺陷就是不能调用脚本文件中的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定义,比如Response.Write("<scripttype='text/javascript'>function myfun(){...}</script>");

第五种用ClientScript类动态添加脚本

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

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

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

例如:

 protected voidButton1_Click(object sender, EventArgs e)

   {

       MessageBox.Show("111");  //先执行了这句,再往下执行

       ClientScript.RegisterStartupScript(this.GetType(),"aa", "<script>click1('aaaa')</script>");//click1('aaaa')是前台jQuery函数

   }

前台脚本:

<script type="text/javascript">

       function click1(a) {

            alert("click1:"+ a);

            returnfalse;

       }

   </script>

 

第六种使用Page.ClientScript.RegisterClientScriptInclude

许多开发人员把JavaScript放在一个.js文件中,这是一种最佳实践方式,因为这非常便于对应用程序进行全局的JavaScript修改。使用RegisterClientScriptInclude方法可以在ASP.NET页面上注册脚本文件,如下所示:

 

实例jsTest01.js文件中的代码:

 

function skyHellow()

 {

    alert("呵呵……,你成功了!");

 }

 

 

实例前台代码:

 

<body>

     <form id="form1"runat="server">

     <div>

     

        <asp:Button ID="btnOK"runat="server" οnclick="btnOK_Click" Text="效果测试" />

    

    </div>

     </form>

 </body>

 </html>

 

实例后台代码:

 

protected voidbtnOK_Click(object sender, EventArgs e)

 {

     string strJs = "jsTest01.js";

     Page.ClientScript.RegisterClientScriptInclude("myKey",strJs);

    Page.ClientScript.RegisterStartupScript(this.GetType(),"myJs", "skyHellow();", true);

 }

后台写script代码  方法二:

 

String csname1 ="PopupScript";

Type cstype =this.GetType();

ClientScriptManager cs =Page.ClientScript;

if(!cs.IsStartupScriptRegistered(cstype, csname1))  

{

String cstext1 ="alert('Hello World');";  //这种方法比较灵活。可以在这里动态传值。

cs.RegisterStartupScript(cstype,csname1, cstext1, true);

}

 

但是在static 方法中用上面的代码会提示this  page 错误。这时应该这样:

 

今天在项目中,想对asp.Net弹出提示框来个封装,为了能更好的调用,就添加了一个CS类,结果方法还没写完就报错了,提示命名空间不对,我想,那就添加引用吧,但是貌似结果也不行,在添加了所有WEB引用之后,最终提示“非静态的字段、方法或属性“System.Web.UI.Page.ClientScript.get”要求对象引用”

于是根据提示的命名空间做了强制转换,就OK了。

Page   page  =  (Page)System.Web.HttpContext.Current.Handler;

page   .ClientScript.RegisterStartupScript(page.GetType(),"失败","<script>alert('修改失败,请稍后再试!');</script>");

 

同时在CS类中只需要添加以下两个引用即可:

using System.Web;

using System.Web.UI;

 

来自:http://blog.csdn.net/kankankankan2222/article/details/7560049

转载于:https://www.cnblogs.com/TBW-Superhero/p/6477256.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值