第一种,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();"

onclick="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" onclick="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

【转】 C#后台调用前台javascript的五种方法的更多相关文章

  1. ASP.NET,C#后台调用前台javascript的五种方法

    C#后台调用前台javascript的五种方法 由于项目需要,用到其他项目组用VC开发的组件,在web后台代码无法访问这个组件,所以只好通过后台调用前台的javascript,从而操作这个组件.在网上 ...

  2. C#后台调用前台javascript的五种方法小结

    第一种,OnClientClick (vs2003不支持这个方法) <asp:Button ID="Button1" runat="server" Tex ...

  3. ASP.NET 前台Javascript调用后台代码 / 后台调用前台Javascript

    1:ASP.NET 前台Javascript调用后台代码 1.1:前台Javascript <script> function CallCs() { var str = "< ...

  4. 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP——实践篇(二)

    在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP——理论篇中描述了一下ASP.NET新手的三个问题及相关的HTTP协议内容,在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP—— ...

  5. 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP——理论篇

    工作两年多了,我会经常尝试给公司小伙伴儿们解决一些问题,几个月下来我发现初入公司的小朋友最爱问的问题就三个 1. 我想前台调用后台的XXX方法怎么弄啊? 2. 我想后台调用前台的XXX JavaScr ...

  6. js调用.net后台事件,和后台调用前台等方法以及js调用服务器控件的方法

    http://blog.csdn.net/deepwishly/article/details/6670942  ajaxPro.dll基础教程(前台调用后台方法,后台调用前台方法) 1. javaS ...

  7. 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP

    由ASP.NET所谓前台调用后台.后台调用前台想到HTTP 在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP——理论篇中描述了一下ASP.NET新手的三个问题及相关的HTTP协议内容,在由 ...

  8. ASP.NET所谓前台调用后台、后台调用前台想到HTTP——实践篇

    由ASP.NET所谓前台调用后台.后台调用前台想到HTTP——实践篇 在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP——理论篇中描述了一下ASP.NET新手的三个问题及相关的HTTP协议 ...

  9. js调用.net后台事件,和后台调用前台等方法总结(转帖)

    js调用.net后台事件,和后台调用前台等方法总结 原文来自:http://hi.baidu.com/xiaowei0705/blog/item/4d56163f5e4bf616bba16725.ht ...

随机推荐

  1. ios开发总结,日常开发:ios开发功能收集,经验分享等等(不断更新中。。。)

    github资料学习和下载地址:https://github.com/niexiaobo/MyDailyDevelopmentNotes ios 学习模块 ios APP 日志管理的重要性: 一个功能 ...

  2. Objective-C编码规范[译]

    原文链接 : The official raywenderlich.com Objective-C style guide 原文作者 : raywenderlich.com Team 译文出自 : r ...

  3. thinkphp5如何使用ajax(变化的核心,也就是ajax作用的核心是什么)

    thinkphp5如何使用ajax(变化的核心,也就是ajax作用的核心是什么) 一.总结 一句话总结:ajax的核心在于页面的不刷新而获取后台数据,所以后台的操作还是一样(获取参数,返回数据),只是 ...

  4. golang快速入门(练习)

    1.打包和工具链 1.1 包 所有 Go 语言的程序都会组织成若干组文件,每组文件被称为一个包. ? 1 2 3 4 5 6 7 8 9 10 net/http/     cgi/     cooki ...

  5. [Angular] Dynamic component's instance and sorting

    After create a component dynamic, we are able to change the component's props and listen to its even ...

  6. Scheme语言--简单介绍

    一年前事实上有时间看完SICP这本书,后来由于种种原因,一直没有继续再学.由于SICP中使用Scheme确实应用不多.在Java,C++的语言眼里,Scheme确实非常另类.现在MIT已经放弃了使用S ...

  7. 在WSL中安装和运行Docker CE

    安装环境 Windows 10 64bit 专业版 1809 WSL安装ubuntu 18.04 LTS DOCKER安装 安装过程没有什么问题,安装docker的网站说明进行安装https://do ...

  8. 初探python+selenium

    由于公司网络管管控严格,服务器上访问外网需要进行身份认证(按理说递交个申请给开放相关域名外网访问就好,无奈不给通过,又想马儿跑又不给马吃草),正好前一阵撸课程的时候看到selenium可以实现自动化, ...

  9. 聊聊PROFINET与PROFIBUS

    1.PROFINET与PROFIBUS从狭义上比,没有可比性,因为他们的物理接口不同,电气特性,不同,波特率不同,电气介质特性不同等等.这样两者的协议是完全没有关联性的,唯一的关联性就是两者都是PI组 ...

  10. Logistic Regression 的简单推导

    Logistic Regression 是一种 Generalized Linear Model(GLM),也即广义线性模型. 1. LR 的基本假设 LR 模型假设观测值 y 成立的对数几率(log ...