js与c#互相调用方法

本文介绍了在C#后台与JavaScript之间进行方法互调的各种方法,包括使用Response.Write、ClientScript类以及通过按钮点击事件。同时,解答了如何在JavaScript中调用C#函数和变量,以及C#访问JavaScript变量的问题,提供了不同场景下的实现策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

c#后台调用前台与js方法互调

(2009-11-05 15:37:19)

今天遇到一个问题,查到不错的资料,放上来记录一下,以防忘记地 址,算是我的笔记吧!c#后台调用前台与js方法互调

很多人都向在服务器 端调用客户端的函数来操作,也就是在asp中调用javascript脚本中已经定义好的脚本函数。经过研究,发现了一些勉强的方法。

 

 

1. 用Response.Write方法写入脚本

 

 

比如在你单击按钮 后,先操作数据库,完了后显示已经完成,可以在最后想调用的地方写上
Response.Write("<script type='text/javascript'>alert();</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等,要把转页代码放在脚本里面

 

 

问:

 

 

1.如何在JavaScript访问C#函数?

 

 

2.如何在JavaScript访问C#变量?

 

 

3.如何在C#中访问JavaScript的已有变量?

 

 

4.如何在C#中访问JavaScript函数?

 

 


 

 

问题1答案如下:

 

 

javaScript函数中执 行C#代码中的函数:

 

 

方法一:1、首先建立一个按钮,在后台将调用或处理的内容写入button_click;

 

 


2
、在前台写一个js函数,内容为document.getElementById("btn1").click();

 

 


3
、在前台或后台调用js函数,激发click事 件,等于访问后台c#函数;

 

 


 

 

方法二:1、函数声明为public

 

 


后台代码(public改成protected也 可以)

 

 


public string ss()

 

 


{

 

 


return("a");

 

 


}

 

 


2
、在html里用 <%=fucntion()% >可以调用

 

 


前台脚本

 

 


<script language=javascript >

 

 


var a = " <%=ss()% >";

 

 


alert(a);

 

 


</script >

 

 

方法三:1 <script language="javascript" >
<!--

 

 

function __doPostBack(eventTarget, eventArgument)
{

var theForm = document.Form1;
//
runat=serverform

 

 


theForm.__EVENTTARGET.value = eventTarget;

 

 


theFrom.__EVENTARGUMENT.value = eventArgument;

 

 


theForm.submit();

 

 


}

 

 


-- >

 

 


</script >

 

 


<input id="Button1" type="button" name="Button1" value="
按钮" >

 

 


 

 

方法四: <script language="javascript" >

 

 

function SubmitKeyClick()

 

 

{

 

 


if (event.keyCode == 13)

 

 


{

 

 


event.cancelBubble = true;

 

 


event.returnValue = false;

 

 


document.all.FunName.value="
你要调用的函数名"

 

 


document.form[0].submit();

 

 


}

 

 

}

 

 

</script >

 

 


 

 

<INPUT id="aaa" type="text" >

 

 

<input type="hidden" name="FunName" > 〈!--用来存储你要调用的函数 --

 

 


 

 

.CS里有:

 

 

public Page_OnLoad()

 

 

{

 

 

if (!Page.IsPost())

 

 

{

 

 

string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";

 

 

//根据传回来的值决定调用哪 个函数

 

 

switch(strFunName)

 

 

{

 

 

case "enter()":

 

 

enter() ; //调用 该函数

 

 

break;

 

 

case "其他":

 

 

//调用其他函数

 

 

break;

 

 

default:

 

 

//调用默认函数

 

 

break;

 

 

}

 

 

}

 

 

}

 

 


 

 

public void enter()

 

 

{

 

 

//……比如计算某值

 

 

}

 

 


 

 

问题2.如何在JavaScript访 问C#变量?

 

 

答案如下:

 

 

方法一:1、通过页面上隐藏域访问 <input id="xx" type="hidden" runat="server" >

 

 

方法二:1、如后台定义了PUBLIC STRING N;前台js中引用该变量的格 式为 ' <%=n% > '"+ <%=n% >+"

 

 

方法三:1、或者你可以在服务器端变量赋值后在页面注册一段脚本

 

 


" <script language= 'javascript ' >var temp=" + tmp + " </script >"

 

 


tmp
是后台变量,然后js中可以直接访问temp获 得值。

 

 


 

 


 

 

3.如何在C#中访问JavaScript的已有变量?

 

 


 

 

答案如下:

 

 


 

 

方法一:1、前台使用静态文本控件隐藏域,将js变量值写入其中;

 

 


2
、后台用request["id"]来获取值;

 

 


 

 

方法二:可以用cookiesession

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值