zoukankan      html  css  js  c++  java
  • 黑马程序员C#与Javascript变量、函数之间的相互调用

    一、javascript调用C#代码解决方案 // 第一种情况: 1.后台方法:

    1. protected string CsharpVoid(string strCC)  
    2. {  
    3.     return strCC;  
    4. }  

    protected string CsharpVoid(string strCC){    return strCC;}2.javascript 调用

    1. <script language="javascript">  
    2. <!--  
    3. var s = "<%=CsharpVoid("www. baidu.com")%>";     
    4. document.write(s);  
    5. // -->  
    6. </script>  

    <script language="javascript"><!--var s = "<%=CsharpVoid("www. baidu.com")%>";   document.write(s);// --></script>  // 第二种情况: 1.后代码:

    1. protected void CsharpVoid()  
    2.   {  
    3.     string strCC = "www.baidu.com";  
    4.     Response.Write(strCC);  
    5.   }  

    protected void CsharpVoid()  {    string strCC = "www.baidu.com";    Response.Write(strCC);  }2.调用方法:CsharpVoid()

    1. <script language="javascript">  
    2. <!--  
    3. document.write("<%CsharpVoid();%>");  
    4. // -->  
    5. </script>  

    <script language="javascript"><!--document.write("<%CsharpVoid();%>");// --></script> 可在页面中放一个按钮,把它设置为不可见style="display:none",然后,用脚本让此按钮点击

    1. document.all("button1").click();   

    document.all("button1").click(); 在此按钮的C#后台中写事件代码,这就是最简单的脚本调用C#方法. 

    二、C#与Javascript变量、函数之间的相互调用 问题1:在JavaScript访问C#函数 方法一: 1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2、在前台写一个js函数,内容为

     
    1. document.getElementById("btn1").click();  

    document.getElementById("btn1").click(); 3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数; 方法二

    1、后台代码函数声明为public(protected也可以)

    1. public string ss()  
    2. {  
    3.         return("a");  
    4. }  

    public string ss(){        return("a");} 2、前台:在html脚本里用<%=fucntion()%>可以调用

    1. <script language=javascript>  
    2. <!--  
    3.              var a = "<%=ss()%>";  
    4.              alert(a);  
    5. // -->  
    6. </script>  

    <script language=javascript><!--             var a = "<%=ss()%>";             alert(a);// --></script>方法三

    1. <script language="javascript">  
    2.   <!--  
    3.     function __doPostBack(eventTarget, eventArgument)  
    4.     {  
    5.         var theForm = document.Form1;       //指runat=server的form  
    6.         theForm.__EVENTTARGET.value = eventTarget;  
    7.         theFrom.__EVENTARGUMENT.value = eventArgument;  
    8.         theForm.submit();  
    9.     }  
    10.   // -->  
    11. </script>  
    12. <input id="Button1" type="button" name="Button1" value="按钮"   onclick="javascript:__doPostBack('Button1','')"/>  

    <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','')"/> ASPX页面有包含asp:LinkButton或者带有AutoPostBack属性且其值为true的服务器控件时,ASP.NET会自动为页面生成下面的脚本:

    1. <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />   
    2. <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />  

    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" /> <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" /> 这两个参数分别由隐藏的两个表单域__ EVENTTARGET和__ EVENTARGUMENT保存。  这两个隐藏的表单可以查找引起页面回送的控件ID和回送时的参数:

    1. string target = Request.Params["__EVENTTARGET"];   
    2. string args = Request.Params["__EVENTARGUMENT"];  

    string target = Request.Params["__EVENTTARGET"]; string args = Request.Params["__EVENTARGUMENT"]; asp:Button和asp:ImageButton不是使用__doPostBack回送页面,所以使用这两个控件回送页面时,上面的代码是无效的。 方法四:1、前台:

    1. <script language="javascript"><!--  
    2. function SubmitKeyClick()  
    3. {  
    4.       if (event.keyCode == 13)  
    5.       {  
    6.           event.cancelBubble = true;  
    7.           event.returnValue = false;  
    8.           document.all.FunName.value="你要调用的函数名";  
    9.           document.form[0].submit();  
    10.       }  
    11. }  
    12. // -->  
    13. </script>  
    14.    
    15. <INPUT onkeypress="SubmitKeyClick()" id="aaa" type="text">  
    16. <input type="hidden" name="FunName"><!--用来存储你要调用的函数 -->  

    <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"><!--用来存储你要调用的函数 -->  2、后台CS代码:

    1. public Page_OnLoad()  
    2. {  
    3.   if (!Page.IsPost())  
    4.   {  
    5.     string strFunName=Request.Form["FunName"]!=null?Request.Form["FunName"]:"";  
    6.     //根据传回来的值决定调用哪个函数  
    7.     switch(strFunName)  
    8.     {  
    9.     case "enter()":  
    10.       enter() ; //调用该函数  
    11.        break;  
    12.     case "其他":  
    13.       //调用其他函数  
    14.       break;  
    15.     default:  
    16.       //调用默认函数  
    17.       break;  
    18.     }  
    19.   }  
    20. }  
    21.    
    22. public void enter()  
    23. {  
    24.   //……比如计算某值  
    25. }  

    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、通过页面上隐藏域访问

    1. <input id="xx" type="hidden" runat="server">  

    <input id="xx" type="hidden" runat="server"> 方法二

    1、如后台定义了:

    1. public string n;  

    public string n; 2、前台js中引用该变量的格式为

     
    1. '<%=n%>'  
    2. //或  
    3. "+<%=n%>+"  
    4. //例:  
    5. var ss="<%=n%>"  

    '<%=n%>'//或"+<%=n%>+"//例:var ss="<%=n%>" 方法三在服务器端变量赋值后在页面注册一段脚本

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

    "<script language='javascript'>var temp=" + tmp + "</script>" tmp是后台变量,然后js中可以直接访问temp获得值。

    问题3:在C#中访问JavaScript的已有变量 方法一: 1、前台使用静态文本控件隐藏域,将js变量值写入其中; 2、后台用request["id"]来获取值; 方法二: 可以用cookie或session问题4:在C#中访问JavaScript函数 方法一:

     
    1. Page.RegisterStartupScript("ggg","<script>SetVisible(1);  
    2. </script>");  

    Page.RegisterStartupScript("ggg","<script>SetVisible(1);</script>"); 方法二: 1、前台使用Literal类:

     
    1. <asp:Literal ID="Literal1" runat="server"></asp:Literal>  

    <asp:Literal ID="Literal1" runat="server"></asp:Literal> 2、后台CS代码:

    1. private void Button2_Click(object sender, System.EventArgs e)  
    2. {  
    3.   string str;  
    4.   str="<mce:script language='javascript'><!--  
    5. ";  
    6.   str+="selectRange()";  
    7.   str+="  
    8. // --></mce:script>";  
    9.   //Literal1.Visible=true;  
    10.   Literal1.Text=str;  
    11. }   
  • 相关阅读:
    创建Variant数组
    ASP与存储过程(Stored Procedures)
    FileSystemObject对象成员概要
    Kotlin 朱涛9 委托 代理 懒加载 Delegate
    Kotlin 朱涛 思维4 空安全思维 平台类型 非空断言
    Kotlin 朱涛7 高阶函数 函数类型 Lambda SAM
    Kotlin 朱涛16 协程 生命周期 Job 结构化并发
    Proxy 代理模式 动态代理 cglib MD
    RxJava 设计理念 观察者模式 Observable lambdas MD
    动态图片 Movie androidgifdrawable GifView
  • 原文地址:https://www.cnblogs.com/victorruan/p/2829760.html
Copyright © 2011-2022 走看看