• c#与javascript


    一、c#调用javascript

    第一种,OnClientClick    (vs2003不支持这个方法)

    <asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="client_click()" OnClick="Button1_Click" />

    client_click() 就是javascript的一个方法。

    第二种,Button1.Attributes.Add("onclick", "return Client_Click()");

    “Client_Click() “是一个前台方法,可以替换成一般的脚本如:retrun confirm('确定删除吗?')

    第三种,ClientScript.RegisterStartupScript,比较好点。

    例子:StringBuilder sb = new StringBuilder();

            sb.Append("<script language='javascript'>");

            sb.Append("Button2_onclick('" + serverPath + "')");

            sb.Append("</script>");

            ClientScript.RegisterStartupScript(this.GetType(), "LoadPicScript", sb.ToString());

    第四种. 用Response.Write方法写入脚本

    比如在你单击按钮后,先操作数据库,完了后显示已经完成,可以在最后想调用的地方写上

    Response.Write("<script type='text/javascript'>alert();</script>");

    这个方法有个缺陷就是不能调用脚本文件中的自定义的函数,只能调用内部函数,具体调用自定义的函数只能在Response.Write写上函数定义,比如Response.Write("<script type='text/javascript'>function myfun(){...}</script>");

    第五种 用ClientScript类动态添加脚本

        用法如下:在想调用某个javascript脚本函数的地方添加代码,注意要保证MyFun已经在脚本文件中定义过了。

        ClientScript.RegisterStartupScript(ClientScript.GetType(), "myscript", "<script>MyFun();</script>");

    这个方法比Response.Write更方便一些,可以直接调用脚本文件中的自定义函数。

    可以在程序的任何地方执行,o(∩_∩)o...,是不是很好用呢

    注意执行顺序:先执行Client ,再执行Server

    二、javascript调用c#

     第一种情况:
    1.后台方法:
    protected string CsharpVoid(string strCC)  
    {  
        return strCC;  

    protected string CsharpVoid(string strCC)
    {
        return strCC;
    }
    2.javascript 调用
    <script language="javascript">  
    <!--  
    var s = "<%=CsharpVoid("www. baidu.com")%>";     
    document.write(s);  
    // -->  
    </script> 
    <script language="javascript">
    <!--
    var s = "<%=CsharpVoid("www. baidu.com")%>";  
    document.write(s);
    // -->
    </script>
    // 第二种情况:
    1.后代码:
    protected void CsharpVoid()  
      {  
        string strCC = "www.baidu.com";  
        Response.Write(strCC);  
      } 
    protected void CsharpVoid()
      {
        string strCC = "www.baidu.com";
        Response.Write(strCC);
      }
    2.调用方法:CsharpVoid()
    <script language="javascript"> 
    <!--  
    document.write("<%CsharpVoid();%>");  
    // --> 
    </script> 
    <script language="javascript">
    <!--
    document.write("<%CsharpVoid();%>");
    // -->
    </script>
    可在页面中放一个按钮,把它设置为不可见style="display:none",然后,用脚本让此按钮点击
    document.all("button1").click();  
    document.all("button1").click();
    在此按钮的C#后台中写事件代码,这就是最简单的脚本调用C#方法.


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wonsoft/archive/2008/06/29/2595743.aspx

    方法一:
    1、首先建立一个按钮,在后台将调用或处理的内容写入button_click中;
    2、在前台写一个js函数,内容为
    view plaincopy to clipboardprint?
    document.getElementById("btn1").click(); 
    document.getElementById("btn1").click();
    3、在前台或后台调用js函数,激发click事件,等于访问后台c#函数;
    方法二:

    1、后台代码函数声明为public(protected也可以)
    public string ss()  
    {  
            return("a");  

    public string ss()
    {
            return("a");
    }
    2、前台:在html脚本里用<%=fucntion()%>可以调用
    <script language=javascript> 
    <!--  
                 var a = "<%=ss()%>";  
                 alert(a);  
    // --> 
    </script> 
    <script language=javascript>
    <!--
                 var a = "<%=ss()%>";
                 alert(a);
    // -->
    </script>
    方法三:
    <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 __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会自动为页面生成下面的脚本:
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />   
    <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和回送时的参数:
    string target = Request.Params["__EVENTTARGET"];   
    string args = Request.Params["__EVENTARGUMENT"]; 
    string target = Request.Params["__EVENTTARGET"];
    string args = Request.Params["__EVENTARGUMENT"];
    asp:Button和asp:ImageButton不是使用__doPostBack回送页面,所以使用这两个控件回送页面时,上面的代码是无效的。
    方法四:1、前台:
    <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"><!--用来存储你要调用的函数 --> 
    <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代码:
    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()  
    {  
      //……比如计算某值  

    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"> 
    <input id="xx" type="hidden" runat="server">
    方法二:

    1、如后台定义了:

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

    view plaincopy to clipboardprint?
    '<%=n%>' 
    //或  
    "+<%=n%>+" 
    //例:  
    var ss="<%=n%>" 
    '<%=n%>'
    //或
    "+<%=n%>+"
    //例:
    var ss="<%=n%>"
     
    方法三:在服务器端变量赋值后在页面注册一段脚本
    view plaincopy to clipboardprint?
    "<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函数
    方法一:
    view plaincopy to clipboardprint?
    Page.RegisterStartupScript("ggg","<script>SetVisible(1);  
    </script>"); 
    Page.RegisterStartupScript("ggg","<script>SetVisible(1);
    </script>");
    方法二:
    1、前台使用Literal类:
    view plaincopy to clipboardprint?
    <asp:Literal ID="Literal1" runat="server"></asp:Literal> 
    <asp:Literal ID="Literal1" runat="server"></asp:Literal>
    2、后台CS代码:
    view plaincopy to clipboardprint?
    private void Button2_Click(object sender, System.EventArgs e)  
    {  
      string str;  
      str="<mce:script language='javascript'><!--  
    ";  
      str+="selectRange()";  
      str+="  
    // --></mce:script>";  
      //Literal1.Visible=true;  
      Literal1.Text=str;  
    }  

    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wonsoft/archive/2008/06/29/2595743.aspx

  • 相关阅读:
    由自身经历谈“不谋全局者,不足以谋一域”
    MySQL 常用SQL语句
    举例说明android中ListPreference的使用方法
    cookie机制和session机制的区别
    thinkphp浏览历史功能实现方法
    利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
    PHP+Ajax点击加载更多内容 -这个效果好,速度快,只能点击更多加载,不能滚动自动加载...
    php用正则表达式匹配URL的简单方法(亲测可行)
    PHP实现记录浏览历史页面
    [译] 流言终结者 —— “SQL Server 是Sybase的产品而不是微软的”
  • 原文地址:https://www.cnblogs.com/jinyuttt/p/1957822.html
Copyright © 2020-2023  润新知