• asp.net中前台javascript与c#函数相互调方法


    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;   

  • 相关阅读:
    Linux 文件的软连接和硬连接
    URLOS发布NFS文件加速功能,可有效提升NFS小文件读取性能
    Vue底层学习3——手撸发布订阅模式
    Vue底层学习2——手撸数据响应化
    Vue底层学习1——原理解析
    rest api测试工具frisbyjs
    git ignore 微软临时文件(~$xxx.xlsx)
    数据虚拟化-基础概念
    elasticsearch移除映射类型(mapping type)
    activemq Virtual Destinations 虚拟目的地
  • 原文地址:https://www.cnblogs.com/hfzsjz/p/1993534.html
Copyright © 2020-2023  润新知