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

来源:互联网 发布:java开源项目管理系统 编辑:程序博客网 时间:2024/05/29 15:51

今天遇到一个问题,查到不错的资料,放上来记录一下,以防忘记地址,算是我的笔记吧!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

原创粉丝点击