zoukankan      html  css  js  c++  java
  • ASP.NET AJAX + JSON 实现对象调用

    最近开始学习ASP.NET AJAX 搞了两天学了点皮毛,贴点代码 日后方便自己查看

    客户端:

    <%@ Page Language="C#" AutoEventWireup="true"  CodeFile="ASP.NETA_JAX.aspx.cs" Inherits="_Default" %>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script type="text/jscript">
            function CallServer() {  

                //JSON发送对象
                ServerSum("{name:'linyijia',age:'21'}");
            }
            function GetRegister(rg, contex) {
                document.getElementById("TxtRegister").value=rg;
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
       
            <br />
            用户名:<input id="TxtNum1" type="text" />
            <br />
            服务器:<input id="TxtRegister" type="text" /><br />
           <button id="SumBtn" type="button" onclick="CallServer()">登录</button>
       
        </div>
        </form>
    </body>
    </html>

    服务器:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.Script.Serialization;

    public partial class _Default : System.Web.UI.Page ,ICallbackEventHandler
    {
        Users u = null;
        protected void Page_Load(object sender, EventArgs e)
        {

           //回调GetRegister方法
            string CallBackFun = Page.ClientScript.GetCallbackEventReference(this,"arg","GetRegister","context");

           //创建ServerSum方法,在客户端调用的时候就,会回调GetRegister方法,把参数传给RaiseCallbackEvent(string eventArgument ),最后通过
          //GetCallbackResult()方法把返回值传给客户端

            string RegisterFun = string.Format("function ServerSum(arg,context){{{0};}}",CallBackFun);
            Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"ServerSum",RegisterFun,true);
           
        }
        string mssage = string.Empty;
        #region ICallbackEventHandler 成员


        public string GetCallbackResult()
        {
            return "服务器:你好,你的用户名为:" + u.Name + "你的年龄为" + u.Age;
        }

        public void RaiseCallbackEvent(string eventArgument)
        {
            JavaScriptSerializer js = new JavaScriptSerializer();
            u  =js.Deserialize<Users>(eventArgument);
           
        }

        #endregion
    }

     Users类

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    /// <summary>
    ///User 的摘要说明
    /// </summary>
    public class Users
    {
        string name;

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        string age;

        public string Age
        {
            get { return age; }
            set { age = value; }
        }
    }

    原理:

    使用JSON向服务器发送一个对象,服务器通过实现 ICallbackEventHandler接口后,重写GetCallbackResult和RaiseCallbackEvent方法,在回调的时候,在RaiseCallbackEvent方法

    中反序列化JSON,并在GetCallbackResult把结果返回给客户端.具体的我以后有空再补充,欢迎大家讨论!

  • 相关阅读:
    Vue2.0 $set()的正确使用方式
    Vue中axios踩坑之路-POST传参
    vue里使用create、mounted调用方法的正确姿势
    cmd返回上一级和根目录
    【积累】排序题积累
    【图论】2019 ICPC Malaysia National G(拓扑排序)
    2019 ICPC Malaysia National F(状态压缩)
    【线段树】扫描线学习笔记
    组合数(阶乘数质因子分解)
    【线段树】2019CCPC网络选拔赛 array(权值线段树)
  • 原文地址:https://www.cnblogs.com/linyijia/p/1646716.html
Copyright © 2011-2022 走看看