• 【原创首发】让ASP.NET前后台没有距离


    在ASP.NET开发过程中,前后台之间数据的传递,事件的调用有时候会给开发带来一些不便。我在本文中介绍一些前后台互相调用的方法。如果大家在开发中有自己的方法,请给我留言,我将集成到本文中,给后来的朋友做一些参考。将开发情境和使用方法做一些,以便更好的使用ASP.NET.

    前台调用后台:

    1.javaScript函数调用

    a.首先建立一个按钮,在后台将调用或处理的内容写入button_click中;

    b.在前台写一个js函数,内容为document.getElementById("btn1").click();

    c.在前台或后台调用js函数,激发click事件,等于访问后台c#函数;

    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
    <href="###" onclick="test()"><img src="http://www.cnblogs.com/Images/adminlogo.gif" /></a>
       <script type="text/javascript" language="javascript">
       
    function test()
       {
          document.getElementById(
    "Button1").click();
       }
       
    </script> 
    protected void Button1_Click(object sender, EventArgs e)
    {
      Response.Write(
    "aaaaaaaaaaaaaaa");
    }

     用click不会引发页面的dopostback事件.

    2.后台公共方法

    a.函数声明为public
    b.在html里用可以调用

    <script type="text/javascript" language="javascript">
    function test2()
    {
      
    var a = "<%=test2()%>"
      alert(a); 
    }
    </script> 
    <href="###" onclick="test2()"><img src="http://www.cnblogs.com/Images/adminlogo.gif" /></a>
    public string test2()
    {
      
    return "hello.";
    }

    3.__doPostBack方法

    <script type="text/javascript" language="javascript">
    function __doPostBack(eventTarget, eventArgument) 

      
    var theForm = document.Form1; //指runat=server的form 
      theForm.__EVENTTARGET.value = eventTarget; 
      theFrom.__EVENTARGUMENT.value 
    = eventArgument; 
      theForm.submit(); 

    function onOpen()
    {
      __doPostBack(
    '<%= Button1.UniqueID %>','');

    </script> 

    <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />

    4.使用ajax框架中的方法

    a.引用ajax.dll.我使用的是Ajax.NET Library 5.7.22.2

    b.在web.config中添加

         <httpHandlers>
            <remove verb="*" path="*.asmx"/>
            <add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax"/>
          </httpHandlers>

    c.在Global.asax中添加

        protected void Application_Start(object sender, EventArgs e)
        {
              Ajax.Utility.HandlerPath = "ajax";
         }

    d.在使用页的后台添加

    protected void Page_Load(object sender, EventArgs e)
    {
      Ajax.Utility.RegisterTypeForAjax(
    typeof(_Default));
    }

    [Ajax.AjaxMethod]
    public string ajaxTest()
    {
      
    return DateTime.Now.ToString();
    }

    说明:typeof(_Default))为使用页的页面类名. [Ajax.AjaxMethod]是需要使用的ajax方法的标识.

    e.在前台页面中使用.

    <script language="javascript" type="text/javascript">
    // <!CDATA[
    function Button1_onclick() {
    var tempstr =_Default.ajaxTest().value;
    //alert(document.getElementById("Label1").innerHTML);
    document.getElementById("Label1").innerHTML = tempstr;    
    }
    // ]]>
    </script>

    <input id="Button1" type="button" value="button" onclick="return Button1_onclick()" />

    后台调用前台:

    1.RegisterStartupScript(key, script)方法
    方法说明:
        接受两个字符串作为输入。第二个参数 script 是要插入到页面中的客户端脚本,包括 <script> 的起始标记和终止标记。第一个参数 key 是插入的客户端脚本的唯一标识符。 Web 窗体的结尾处(在 </form> 标识之前)发送脚本块。
    调用Demo:
    前台脚本:

    <script type="text/javascript" language="javascript">
     
    function Show()
     {
       alert(
    "Hello");
     }
    </script> 
    普通环境后台:
    Page.ClientScript.RegisterStartupScript(this.GetType(), "Show""javascript:Show()",true);
    Ajax环境后台:
    ScriptManager.RegisterStartupScript(this.Page, typeof(_Default), "show""Show();"true);

    2.RegisterClientScriptBlock(key, script)方法
    方法说明:
        接受两个字符串作为输入。第二个参数 script 是要插入到页面中的客户端脚本,包括 <script> 的起始标记和终止标记。第一个参数 key 是插入的客户端脚本的唯一标识符。  Web 窗体的开始处(紧接着 <form runat="server"> 标识之后)发送脚本块,
    调用Demo:
    前台脚本:
    <script type="text/javascript" language="javascript">
    function Show()
    {
      alert(
    "Hello");
    }
    </script>
    普通环境后台:
    Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "Show""javascript:Show()",true);
    Ajax环境后台:
    ScriptManager.RegisterClientScriptBlock(this.Page, typeof(_Default), "show""Show();"true);

    3.控件属性添加
    例如为按钮控件添加OnClick调用前台Show()方法.
    btnShow.Attributes.Add("OnClick""javascript:Show()");


    前台调用后台,然后返回前台:

    1.通过asp.net 2.0中提供的客户端回调函数GetCallbackEventReference

    使用方法和Demo讲解
    前台代码

    后台代码
  • 相关阅读:
    bzoj 4260 Codechef REBXOR——trie树
    bzoj 2238 Mst——树链剖分
    bzoj 2836 魔法树——树链剖分
    CF 888E Maximum Subsequence——折半搜索
    bzoj 4289 PA2012 Tax——构图
    bzoj 4398 福慧双修——二进制分组
    bzoj1116 [POI2008]CLO——并查集找环
    bzoj4241 历史研究——分块
    bzoj4373 算术天才⑨与等差数列——线段树+set
    bzoj4034 [HAOI2015]树上操作——树链剖分
  • 原文地址:https://www.cnblogs.com/a311300/p/1240590.html
Copyright © 2020-2023  润新知