ASP.NET前台JS与后台CS函数如何互相调⽤
在实际的Web开发中,我们可能会常常遇到后台调⽤前台JS代码或者前台JS调⽤后台代码的情况。今天就把⽐较实⽤的前后台相互调⽤的⽅法总结出来和⼤家分享。
<1>后台代码调⽤前台JS代码
⼀、说到后台代码调⽤前台的JS代码很多⼈⾸先就会想到使⽤ClientScript对象。
ClientScript.RegisterStartupScript()⽅法,该⽅法主要是注册启动脚本⽂本,即在后台执⾏调⽤前台JS代码
该⽅法有两个重载,
1、ClientScript.RegisterStartupScript(Type type,string key ,string script)注册启动脚本//分别表⽰:1、要注册的启动脚本的类型(⼀般直接填this.GetType()即可),
2、要注册的启动脚本的键(相当于为执⾏脚本起⼀个名字,任意名即可),
3、要注册的启动脚本⽂本(⼀般为"<script>函数()</script>");
⽰例:
ClientScript.RegisterStartupScript(this.GetType(),"SayHello","<script>SayHello('"+name+"')</script>");//先获取⽤户姓名,然后再调⽤前台的JS函数SayHello(name);
2、ClientScript.RegisterStartupScript(Typetype,string key, string script,bool flag);//该函数和第⼀参数的区别在于将最后⼀个参数设为"ture"时,第三个参数可以直接写被调⽤的函数,不⽤再加"<script></script>",这两个⽅法差别不是很⼤。
⽰例:
ClientScript.RegisterStartupScript(this.GetType(),"SayHello1", "SayHello('" + name + "')", true);//跟第⼀⽅法的效果⼀样,调⽤前台SayHello(name)函数,如果最后⼀个值设为false,则仍需添加上"<script></script>"标记
这⾥需要特别注意的是在注册启动脚本的时候,键是唯⼀的,不能重复,如果有将会报错。
⼆、使⽤ClientScript.RegisterClientScriptBlock()⽅法,注册客户端脚本块
该⽅法有两个重载,使⽤⽅法⼏乎和ClientScript.RegisterClientScriptBlock()的两个⽅法⼀模⼀样。这⾥只是给出⽰例,就不再做过多的解释。
ClientScript.RegisterClientScriptBlock(this.GetType(),"SayHello2", "ShowPerson('" + age +
"')",true);        ClientScript.RegisterClientScriptBlock(this.GetType(),"SayHello2","<script>SayHello('"+name+"')</script>");
在这⾥主要讲⼀下RegisterClientScriptBlock⽅法和RegisterStartupScript⽅法和区别
RegisterStartupScript,这种⽅法会把JS代码嵌⼊在页⾯的底部、表单的最后(</form>前⾯),适⽤于要在页⾯控件加载完成后运⾏的JS代码
RegisterClientScriptBlock,这种⽅法会把JS代码嵌⼊在页⾯的顶部、表单的最前(<form>后⾯),适⽤于要在控件加载前执⾏的JS代码
通过html源代码可见。
三、使⽤Control.Attribute属性(服务器控件)
这也是⼀种⽐较简单好⽤的⽅法,可以将该⽅法和控件的客户端⽅法相关联,⽐
如“onblur,onfocus,onmousemove,onmouseover“等,在这⾥只是把该⽅法作为Control的⼀个属性来⽤。
⽰例:
在Page_Load()⽅法⾥添加如下代码:
txtname.Attributes["onblur"] ="show('" + txt.Text + "')";//当⽤户离开⽂本框时,会提⽰所输⼊的内容(在Page_Load使⽤该⽅法,其实是在编译成源⽂件时在对应的html元素的属性调⽤js函数,如<inputtype=”text” onblur=”show()”/>)
还可以通过这种⽅法来控制前台的显⽰。其实现⽅法和本例的⽅法都是⼀样的,在这⾥就不做过多的介绍了。
四、可以使⽤Control的⼀个属性,(服务器控件),OnClientClick
为该属性赋值OnClientClick="SayHello()";则就会调⽤客户端的⽅法,该⽅法的本质就是⼀个客户端的⽅法。(该属性只有服务器控件具有,在编译成源⽂件时,其实是转换成对应的事件,如OnClientClick会转换成onclick)
⽰例:
<asp:Button ID="Button1" runat="server"OnClientClick="Get()" Text="OnClientClick⽅法测试"/>
<2>前台JS调⽤后台的⽅法
⼀、最简单的⼀种⽅式,在前台的JS函数中写下如下代码:
Var name=<%=SayHello()%>
在Asp.NET 以前的ASP就是通过这样的⽅式将cs代码写到apsx页的,在<% %>中就可以写cs代码了,效果跟在cs页写⼀样。
在前台页⾯<head><head>节点中添加如下代码:
<script type="text/javascript>
function Get() {
var hello="<%=SayHello() %>";
alert(hello);
}
</script>
后台cs页代码如下:
public string SayHello()
{
return " Javascript调⽤后台代码显⽰姓名: Olive";
}
结果:
⼆、通过辅助按钮实现前台JS调⽤后台代码(这样相当于添加多了⼀个按钮)
1、先在前台添加⼀个服务器端按钮,双击,进⼊后台.cs页,写下将要执⾏的代码
如下:
protected void Button4_Click(object sender,EventArgs e)      {
//在此⽅法⾥写下要执⾏的代码,此处为简单的⽰例
Response.Write("<script>alert('O(∩_∩)O哈哈~你好!')</script>");
}
2、将该按钮的Width属性设为0,将Height属性设为0,形如
<asp:Button ID="btnhoutai" runat="server"Text="" Width="0"Height="0"
onclick="Button4_Click" />
3、在前台添加⼀个JS函数,如下:
function Show1() {
}
4、添加html按钮并将其onclick="Show1()";
onblur和blur的区别如下:
<input id="btnjs"type="button" value="Js 调⽤后台C#函数" onclick="Show1()"/>经过以上这四步就可以实现JS调⽤后台的代码了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。