前台javascript与c#函数相互调方法

来源:互联网 发布:sublime text for mac 编辑:程序博客网 时间:2024/05/17 06:37

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 前台放一个按钮。设置为隐藏。注意:不能直接设置Visible=false的方式,这样的话在ASP.Net 2.0编译后的代码里是找不到这个按钮的。需要设置风格:style="display:none;"
2 双击按钮,写入C#方法,或者写一个调用后台其他方法的代码段
3 前台JS调用的时候,照如下写,这样可以模拟按钮的点击事件,触发后台方法:
document.getElementById("Button2").click();

示例
ASP.Net页:

  Code 
<% @ Page Language = " C# " AutoEventWireup = " true " CodeFile = " Default.aspx.cs " Inherits = " _Default " %>

<! DOCTYPE html PUBLIC " -//W3C//DTD XHTML 1.1//EN " " http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd " > 
< html xmlns = " http://www.w3.org/1999/xhtml " > 
< head runat = " server " > 
     < title > Untitled Page </ title >

     < script > 
     function go()
     {
         document.getElementById( " Button2 " ).click();
     }
     </ script >

</ head > 
< body > 
     < form id = " form1 " runat = " server " > 
         < div > 
             < asp:TextBox ID = " TextBox1 " runat = " server " ></ asp:TextBox > 
             < asp:Button ID = " Button1 " runat = " server " Text = " Button " OnClientClick = " go();return false; " /> 
             < asp:Button ID = " Button2 " runat = " server " Text = " Button " OnClick = " Button2_Click " Style = " display: none; " /> 
         </ div > 
     </ form > 
</ body > 
</ html >

后台C#:

  Code 
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text;

public partial class _Default : System.Web.UI.Page 
{
     protected void Page_Load( object sender, EventArgs e)
     {

       
     }

     protected void Button2_Click( object sender, EventArgs e)
     {
         this .SayHello();
     }

     private void SayHello()
     {
         this .TextBox1.Text = " 你好! " ;
     }
}

方法二:    
   
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=server的form    
   
                theForm.__EVENTTARGET.value = eventTarget;    
   
                theFrom.__EVENTARGUMENT.value = eventArgument;    
   
                theForm.submit();    
   
             }    
   
             -->    
   
             </script>    
   
             <input id="Button1" type="button" name="Button1" value="按钮" onclick="javascript:__doPostBack('Button1','')">    
   
             
   
方法四:    
   
<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 onkeypress="SubmitKeyClick()" 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"]来获取值;    
   
   
   
方法二:可以用cookie或session    
   
   
   
   
   
4.如何在C#中访问JavaScript函数?    
   
答案如下:    
   
c#代码中执行javaScript函数:    
   
方法一:1、Page.RegisterStartupScript("ggg","<script>SetVisible(1);</script>");    
   
方法二:使用Literal类,然后    
   
private void Button2_Click(object sender, System.EventArgs e)    
   
{    
   
string str;    
   
str="<script language='javascript'>";    
   
str+="selectRange()";    
   
str+="</script>";    
   
//Literal1.Visible=true;    
   
Literal1.Text=str;   

 

转自:http://www.cnblogs.com/hfzsjz/ 点击查看更多文章

原创粉丝点击