zoukankan      html  css  js  c++  java
  • 使用JavaScript调用asp.net代码

    1.如何在javascript访问C#变量?
    方法一:使用
    <%=%
    <input id="Button3" type="button" value="js调用c#变量" onclick="return Button3_onclick()" />
    function Button3_onclick()
    {        
        alert(
    '我的名字:'+ '<%=name %>');
    }
    cs代码中的定义:protected 
    string name = "chenlaing";
    方法二:使用Hidden隐藏控件
    <input id="Hidden1" runat="server" type="hidden" />
    在cs代码中给该隐藏控件赋值: Hidden1.Value 
    = "陈亮";
    function Button3_onclick()
    {        
        alert(document.getElementById(
    "Hidden1").value);
    }
    方法三:在cs代码中注册js脚本
    string tmp = "陈全用";
    ClientScript.RegisterClientScriptBlock(this.GetType(), 
    null"<script language='javascript'>var temp='" + tmp + "'</script>");
    function Button3_onclick()
    {        
         alert(temp);


    2. 在javascript访问C#函数:
    方法一:使用
    <%>
    <script type="text/javascript">
              
    var s = "<%=ShowBehindInfo("chenliang")%>"
              document.write(s);
    </script>
    cs后台代码:
    protected string ShowBehindInfo(string name)
    {
        return "姓名:" + name;
    }
    方法二:使用
    <% %>
    <script   type="text/javascript">
         document.write(
    "<%ShowResult();%>"); 
    </script>
    cs后台代码:
    protected void ShowResult()
    {
        Response.Write("我是陈全勇气");
    }
    方法三:
    <style>
            .btn
            
    {
                display
    :none;
            
    }
    </style>
    <asp:Button ID="Button1" runat="server" CssClass="btn" Text="Button" OnClick="Button1_Click" />
    <div onclick="invokeCharp()">点击调用aspx.cs的代码</div>
    以下js代码将调用后台的cs代码
    function invokeCharp()
    {
        document.getElementById("Button1").click();
    }
    通过js调用的代码
    protected void Button1_Click(object sender, EventArgs e)
    {
        Response.Write("被js调用的代码");
    }
    方法四:
    <input type="hidden"   name="txtFunName">
    <input id="Button2" type="button" value="调用cs函数" onclick="return Button2_onclick()" />
    //将调用的信息存入隐藏控件中 在提交表单
    function Button2_onclick()
    {
        document.all.txtFunName.value="show";
        document.forms[0].submit();
    }
    //后台cs代码
    protected void Page_Load(object sender, EventArgs e)
    {
            string strFunName = Request.Form["txtFunName"] != null ? Request.Form["txtFunName"] : "";
            //根据传回来的值决定调用哪个函数
            switch (strFunName)
            {
                case "show":
                    enter(); //调用该函数
                    break;
                default:
                    //调用默认函数
                    break;
            }
    }
    方法五:
    使用__doPostBack();
    <input id="Button6" type="button" value="调用服务端的button" onclick="Button6_onclick()" />
    <asp:Button ID="btn" runat="server"   Text="Button" OnClick="btn_Click" /> 
    <asp:CheckBox ID="CheckBox1" AutoPostBack="true" runat="server" />
    function Button6_onclick()
    {
       var res = "chenliang";
       __doPostBack('btn','chenlinng');
    }
    //以上脚本将调用以下事件代码
    protected void btn_Click(object sender, EventArgs e)
    {
        string target = Request.Params["__EVENTTARGET"];
        string args = Request.Params["__EVENTARGUMENT"];
        Response.Write(target + "
    <Br>" + args);
    }
    __doPostBack解释:
    是一个纯粹并且是非常简单的javascript函数
    如以上代码,如果ASPX页面有包含asp:LinkButton或者带有AutoPostBack属性且其值为true的服务器控件时
    ASP.NET会自动为页面生成下面的脚本
    实际上调用__doPostBack函数
    也就是将触发回发的控件(第一个参数)及相关参数(第二个参数)付给两个页面的隐藏控件
    然后提交表单;
    <input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
    <input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
    function __doPostBack(eventTarget, eventArgument)
    {
       if (!theForm.onsubmit || (theForm.onsubmit() != false))
       {
          theForm.__EVENTTARGET.value = eventTarget;
          theForm.__EVENTARGUMENT.value = eventArgument;
          theForm.submit();
       }   

    而在后台事件代码中可以
    通过Request.Form[“__EVENTTARGET”]获取到触发页面PostBack的事件源(控件的ID)
    但Button和ImageButton触发的PostBack无法通过这种方式获取到它们的ID

    来自http://hi.baidu.com/chen839357/blog/item/42bb9594c12d4047d0135e60.html

  • 相关阅读:
    会话 终端
    linux 守护进程(daemon process)代码-详细注释
    linux进程及进程控制
    POSIX 消息队列 之 概述 链接方式
    管道和FIFO 一
    菜鸟从零学编程(七)——搭建一个完整的Java开发环境
    谈《赢》之慧眼识人
    kgdb接收一个数据包详解
    MapReduce调度与执行原理之作业初始化
    System Request 进入KDB模式过程详解
  • 原文地址:https://www.cnblogs.com/NetSos/p/1748629.html
Copyright © 2011-2022 走看看