zoukankan      html  css  js  c++  java
  • AjaxPro使用方法

    无意中看到同事用AjaxPro用,看到很不错,特长是前后台传输数据特别方便。

    最好的教材就是拿到就可以用,方便大家。

    以前数据传输用FORM提交,或者在前台用JASON拼接然后通过AJAX方式提交。总之要写好多代码,很不方便。要么页面刷新,要么总是写一件重复代码。

    AjaxPro的方便之处就是前台不需要写太多的代码,可以直接跟后台方法进行访问,中间用数据JASON数据传输这一切她都已经帮你做了。网上找了几个教程都感觉不错。现在我把她从配置到例子整理下分享给大家。

    一、配置AjaxPro:

    1. 下载AjaxPro.2.dll并添加到工程里,如图:

    2. 在web.config中添加注册信息

    3. 准备测试,在后台Page_Load注册下,如下图:

    这样就配置好了。
    二、这里只举下个例子,从后台得到字符串,其他情况我会把代码全部加上,相信大家都能看得懂。
    后台代码:

    前台代码:

    也可以不加回调函数,如果不加的话就是异步调用,否则就是同步调用。两者区别就不用说了吧。直接加个BUTTON去调用TestString就可以了。
    显示alert message 如下:

    下面附上在开发过程中遇到的几种常见情况,欢迎大家扩充:
    所有后台代码:
    Default.aspx.cs
    using System;
    using System.Collections;
    using System.Configuration;
    using System.Data;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Collections.Generic;
     
    namespace AjaxProTest
    {
        public partial class _Default : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
                if (!Page.IsPostBack) {
                    AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
                }
            }
     
            //return string
            [AjaxPro.AjaxMethod]
            public String GetAjaxString(string str)
            {
                return "Hello AjaxPro: " + str + Session.Count;
            }
     
            //return object.
            [AjaxPro.AjaxMethod]
            public BehaviourInfo GetAjaxObject()
            {
                var behaviourInfo = new BehaviourInfo();
                behaviourInfo.Behaviour = "this is test behaviour...";
                return behaviourInfo;
            }
     
            //return datatable.
            [AjaxPro.AjaxMethod]
            public DataTable GetAjaxDatatable()
            {
                var dt = new DataTable("Table_AX");
                //Method 1
                dt.Columns.Add("column0", System.Type.GetType("System.String"));
                //Method 2
                var dc = new DataColumn("column1", System.Type.GetType("System.Boolean"));
                dt.Columns.Add(dc);
     
                //Add rows for DataTable
                //Initialize the row
                DataRow dr = dt.NewRow();
                dr["column0"] = "AX";
                dr["column1"] = true;
     
                dt.Rows.Add(dr);
                return dt;
            }
     
            //return list<string>
            [AjaxPro.AjaxMethod]
            public List<String> GetAjaxListString()
            {
                var list = new List<String> {"abc", "def"};
                return list;
            }
     
            //return list<string>
            [AjaxPro.AjaxMethod]
            public void SetAjaxObj(BehaviourInfo behaviourInfo)
            {
                System.Console.WriteLine(behaviourInfo.Behaviour);
            }
        }
    }

    DataClass.cs

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    using System;
    using System.Data;
    using System.Configuration;
    using System.Linq;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Xml.Linq;
    using System.Runtime.Serialization;
     
    namespace AjaxProTest
    {
        [DataContract]
        public class BehaviourInfo
        {
            [DataMember(Order = 0)]
            public string Behaviour { get; set; }
            [DataMember(Order = 1)]
            public int Lev1 { get; set; }
            [DataMember(Order = 2)]
            public int Lev2 { get; set; }
            [DataMember(Order = 3)]
            public bool IsAuto { get; set; }
        }
     
        [DataContract]
        public class User
        {
            [DataMember(Order = 0)]
            public string Name { get; set; }
            [DataMember(Order = 1)]
            public string Address { get; set; }
            [DataMember(Order = 2)]
            public string Sex { get; set; }
        }
    }
    所有前台代码:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AjaxProTest._Default" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <head runat="server">
        <title>Untitled Page</title>
    </head>
    <script language="javascript">
        //get string
        function TestString() {
            AjaxProTest._Default.GetAjaxString("Rocky", TestStringRetrun);
        }
        function TestStringRetrun(res) {
            alert(res.value);
        }
     
        //get object.
        function TestObject() {
            AjaxProTest._Default.GetAjaxObject(TestObjectReturn);
        }
     
        function TestObjectReturn(res) {
            alert(res.value.Behaviour);
        }
     
        //get Datatable.
        function TestDatatable() {
            AjaxProTest._Default.GetAjaxDatatable(TestDatatableReturn);
        }
     
        function TestDatatableReturn(res) {
            var dt = res.value;
            alert("column0:" + dt.Rows[0].column0 + " column1:" + dt.Rows[0].column1);
        }
         
        //get List<String>
        function TestListString() {
            AjaxProTest._Default.GetAjaxListString(TestListStringReturn);
        }
     
        function TestListStringReturn(res) {
            var list = res.value;
            var str = "";
            for(var i=0;i<list.length;i++){
                str = str + list[i] + " ";
            }
            alert("List:" + str);
        }
     
        //...get其他类推
     
        //set demo
        function SetObject() {
            var Obj = new Object();
            Obj.Behaviour = "Rocky...";
            Obj.Lev1 = 1;
            Obj.Lev2 = 2;
            Obj.IsAuto = true;
            AjaxProTest._Default.SetAjaxObj(Obj);
        }
    </script>
    <body>
        <form id="form1" runat="server">
        <div>
            Get something demo<br>
            <input type="button" value="TestString" onclick="TestString();"/>  
            <input type="button" value="TestObject" onclick="TestObject();"/>  
            <input type="button" value="TestDatable" onclick="TestDatatable();"/>  
            <input type="button" value="TestListString" onclick="TestListString();"/>
            <hr />
            Set something demo<br />
            <input type="button" value="SetObject" onclick="SetObject();"/>
        </div>
        </form>
    </body>
    </html>
  • 相关阅读:
    常用安卓开发技巧汇总
    安卓开发30:AsyncTask的用法
    JBoss AS7 快速配置
    抓包 把笔记本改造成无线路由器 —— 手机抓包牛刀小试
    Android系统手机端抓包方法
    ApkTool反编译apk,去除广告或者汉化后重新打包apk,并签名
    Android中如何像 360 一样优雅的杀死后台Service而不启动
    android service 的各种用法(IPC、AIDL)
    Android shell 下 busybox,clear,tcpdump、、众多命令的移植
    Servlet3.0中Servlet的使用
  • 原文地址:https://www.cnblogs.com/mooncher/p/4169890.html
Copyright © 2011-2022 走看看