【转】 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();"
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的五种方法的更多相关文章
- ASP.NET,C#后台调用前台javascript的五种方法
C#后台调用前台javascript的五种方法 由于项目需要,用到其他项目组用VC开发的组件,在web后台代码无法访问这个组件,所以只好通过后台调用前台的javascript,从而操作这个组件.在网上 ...
- C#后台调用前台javascript的五种方法小结
第一种,OnClientClick (vs2003不支持这个方法) <asp:Button ID="Button1" runat="server" Tex ...
- ASP.NET 前台Javascript调用后台代码 / 后台调用前台Javascript
1:ASP.NET 前台Javascript调用后台代码 1.1:前台Javascript <script> function CallCs() { var str = "< ...
- 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP——实践篇(二)
在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP——理论篇中描述了一下ASP.NET新手的三个问题及相关的HTTP协议内容,在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP—— ...
- 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP——理论篇
工作两年多了,我会经常尝试给公司小伙伴儿们解决一些问题,几个月下来我发现初入公司的小朋友最爱问的问题就三个 1. 我想前台调用后台的XXX方法怎么弄啊? 2. 我想后台调用前台的XXX JavaScr ...
- js调用.net后台事件,和后台调用前台等方法以及js调用服务器控件的方法
http://blog.csdn.net/deepwishly/article/details/6670942 ajaxPro.dll基础教程(前台调用后台方法,后台调用前台方法) 1. javaS ...
- 由ASP.NET所谓前台调用后台、后台调用前台想到HTTP
由ASP.NET所谓前台调用后台.后台调用前台想到HTTP 在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP——理论篇中描述了一下ASP.NET新手的三个问题及相关的HTTP协议内容,在由 ...
- ASP.NET所谓前台调用后台、后台调用前台想到HTTP——实践篇
由ASP.NET所谓前台调用后台.后台调用前台想到HTTP——实践篇 在由ASP.NET所谓前台调用后台.后台调用前台想到HTTP——理论篇中描述了一下ASP.NET新手的三个问题及相关的HTTP协议 ...
- js调用.net后台事件,和后台调用前台等方法总结(转帖)
js调用.net后台事件,和后台调用前台等方法总结 原文来自:http://hi.baidu.com/xiaowei0705/blog/item/4d56163f5e4bf616bba16725.ht ...
随机推荐
- ios开发瀑布流框架的应用
一:瀑布流框架的应用:将封装好的瀑布流框架导入,遵守协议 二:代码: #import "HMShopsViewController.h" #import "HMShopC ...
- 关于IT增值服务"拜师学艺"价格调整的通知
经过几天的探索,在与若干潜在付费客户交流的基础上,决定对IT增值服务"拜师学艺"价格进行调整. 当前价格:年费1000元,月付100元-1年付10个月. 2015年1月1日起,年费 ...
- Passive DNS
http://blog.csdn.net/cnbird2008/article/details/17250707 http://netsecurity.51cto.com/art/201510/494 ...
- Tokumx vs Mongodb
Mongodb是一个文档型nosql数据库 採用C++编写 Mongo DB最大的优势在于全部的数据持久操作都无需开发者手动编写SQL语句,直接调用方法就能够轻松的实现CRUD操作. 非常多人觉得mo ...
- Python实战:如何隐藏自己的爬虫身份
使用爬虫访问网站,需要尽可能的隐藏自己的身份,以防被服务器屏蔽,在工作工程中,我们有2种方式来实现这一目的,分别是延时访问和动态代理,接下来我们会对这两种方式进行讲解 1.延时访问 见名之意,延时访问 ...
- SQLite编码
•SQLite编码 •讲师:李明杰 •技术博客:http://www.cnblogs.com/mjios •SQLite3 •在iOS中使用SQLite3,首先要添加库文件libsqlite3.dyl ...
- 为何放弃 C++ 的工作(开发慢,难度高。完全不适应互联网的快速迭代的思想)
happypeter,2015年1月9日 昨天进燕山大学编程爱好者 QQ 群,看到有很多同学在学 C++ ,我当然是不喜欢了,因为我是做 Web 开发的嘛.所以怀着猥琐的心情,今天写篇傻傻的文章,来黑 ...
- TensorFlow 学习(十二)—— 高级函数
tf.map_fn(fn, elems):接受一个函数对象,然后用该函数对象对集合(elems)中的每一个元素分别处理, def preprocessing_image(image, training ...
- Android中数据库和安装包分离
我们在做Android应用尤其是商业应用的时候,很多时候都需要后期版本升级,如果我们的数据库文件非常大,比如游戏之类的,这时候就不应该每次版本更新都去重新复制数据库.将数据库和安装包分离,下面来详细介 ...
- instsrv.exe用法
这个小工具是用以安装和卸载可执行的服务和指派服务名给这些可执行的服务的. 一:绑定程序和服务 这里我们设定要将F:\cpu.exe 以 abc 的名称显示作为服务的话,我们应当这样子做: 在开 ...