Call Back Callback – 整合AjaxHepler到NBear

今天将NBear晋级到v一.五.伍,主要的升级一是骤增了八个类EntitySerializer,
OneToManyEntity塞里alizer,

OneToOneEntity塞里alizer用于简化用户对类别化子件的运用,您不要再对着SerializerHelper提必要你的大堆体系化方法手足无措了。另3个生死攸关的换代是合贰为一了AjaxHelper

Teddy从前的Ajax达成到NBear。AjaxHelper原来的落实基于Prototype1.三.壹,从Atlas
beta出来起,特德dy已经很久未有创新了,因为本身一向在思虑AjaxHelper存在的须要性,要是存在,该非凡什么。此番不是简不难单的Copy到NBear的目录,而是完全的购并,Ajax的实现大旨也改用ASP.NET2.0内置的Callback代替prototype,重要的运用格局不变,请运行并瞻仰下载后的源码的NBear.WebTest
project的TestAjaxHelper.aspx,该页面包蕴了运用范例和不难表达。因为差不离的使用情势没变,关于AjaxHelper的越多从前的AjaxHelper有关小说。

下载

你能够从那里下载最新版本的NBear
v1.5.五

演示解析

TestAjaxHelper.aspx.cs

 1图片 1using System;
 2图片 2using System.Data;
 3图片 3using System.Configuration;
 4图片 4using System.Collections;
 5图片 5using System.Web;
 6图片 6using System.Web.Security;
 7图片 7using System.Web.UI;
 8图片 8using System.Web.UI.WebControls;
 9图片 9using System.Web.UI.WebControls.WebParts;
10图片 10using System.Web.UI.HtmlControls;
11图片 11
12图片 12public partial class TestAjaxHelper : NBear.Web.UI.Page
13图片 13图片 14图片 15{
14图片 16    protected override bool EnableAjaxCallback
15图片 17图片 18    图片 19{
16图片 20        get
17图片 21图片 22        图片 23{
18图片 24            return true;
19图片 25        }
20图片 26    }
21图片 27
22图片 28    protected void Page_Load(object sender, EventArgs e)
23图片 29图片 30    图片 31{
24图片 32    }
25图片 33}

瞩目Line1肆-20,若是愿意近年来page的AjaxHelper功用开启,必须像这么持续NBear.Web.UI.Page而不是暗许的Page,并且重载EnableAjaxCallback属性,置为true。不然是访问不到AjaxHelper的API的。

TestAjaxHelper.aspx

 1图片 34图片 35<%图片 36@ Page Language=”C#” AutoEventWireup=”true” CodeFile=”TestAjaxHelper.aspx.cs” Inherits=”TestAjaxHelper” %>
 2图片 37
 3图片 38<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&gt;
 4图片 39
 5图片 40<html xmlns=”http://www.w3.org/1999/xhtml” >
 6图片 41<head runat=”server”>
 7图片 42    <title>Untitled Page</title>
 8图片 43</head>
 9图片 44<body>
10图片 45    <form id=”form1″ runat=”server”>
11图片 46    <div id=”output1″></div>
12图片 47    <br /> 
13图片 48    <div>
14图片 49图片 50         <script language=”javascript” type=”text/javascript”>图片 51
15图片 52            function OnComplete(content)
16图片 53图片 54            图片 55{
17图片 56                //you can deal with the return content here
18图片 57               alert(content); 
19图片 58            }
20图片 59         </script>
21图片 60        <input type=”button” value=”Callback & Updater using serverside created script handler” onclick=”<%= Ajax.Updater(“controls/ctlHelloWorld”, “output1”, null, “alert”)  %>” /><br />
22图片 61        <br />
23图片 62        <input type=”button” value=”Callback Only using clientside created script handler” onclick=”Ajax.Callback(‘controls/ctlHelloWorld’, ‘param1=1&param2=22’, OnComplete)” /><br />
24图片 63        <br />
25图片 64        Both Ajax.Callback & Ajax.Updater have serverside and clientside version and can be writen like these two buttons.<br />
26图片 65        <br />
27图片 66        The first param of Ajax.Callback and Ajax.Updater must be a UseControl inherits from NBear.Web.UI.AjaxTemplate, and u must override OnAjaxTemplatePreRender() and put init code in it to control what to display in the control.<br />
28图片 67        If u put code in Page_Load of this kind of controls, they will never be run.<br />
29图片 68        <br />
30图片 69        You can deal with the callback return data in custom client script function like the ‘OnComplete’ function in this page.<br />
31图片 70        <br />
32图片 71        The second param of Ajax.Callback can be “param1=1&param2=22” like params. Please use escape() to wrap this param before pass to serverside.
33图片 72        </div>
34图片 73    </form>
35图片 74</body>
36图片 75</html>

瞩目那里四个Button区别的onclick设置方法,三种艺术等价可选的,也便是说客户端和服务段都有Ajax.Callback和Ajax.Updater函数,该页面包车型大巴表明文字作了越发分解。点击这一个页面中的按钮时,callback将被触发,调用并展现controls/ctlHelloWorld.ascx中的内容。

ctlHelloWorld.ascx

1图片 76图片 77<%图片 78@ Control Language=”C#” AutoEventWireup=”true” CodeFile=”ctlHelloWorld.ascx.cs” Inherits=”controls_ctlHelloWorld” %>
2图片 79图片 80<%图片 81# text %><br />
3图片 82<br />
4图片 83<asp:GridView ID=”GridView1″ runat=”server”>
5图片 84</asp:GridView>

瞩目,那里演示1个很简短的数量绑定,复杂绑定也是如出1辙的。

ctlHelloWorld.ascx.cs

 1图片 85using System;
 2图片 86using System.Data;
 3图片 87using System.Configuration;
 4图片 88using System.Collections;
 5图片 89using System.Web;
 6图片 90using System.Web.Security;
 7图片 91using System.Web.UI;
 8图片 92using System.Web.UI.WebControls;
 9图片 93using System.Web.UI.WebControls.WebParts;
10图片 94using System.Web.UI.HtmlControls;
11图片 95
12图片 96public partial class controls_ctlHelloWorld : NBear.Web.UI.AjaxTemplate
13图片 97图片 98图片 99{
14图片 100    protected string text = “Hello World”;
15图片 101
16图片 102    public override void OnAjaxTemplatePreRender()
17图片 103图片 104    图片 105{
18图片 106        TestEntity obj = new TestEntity();
19图片 107        obj.ID = 1;
20图片 108        obj.Name = “test”;
21图片 109
22图片 110图片 111        GridView1.DataSource = new TestEntity[] 图片 112{ obj, obj, obj };
23图片 113
24图片 114        DataBind();
25图片 115    }
26图片 116
27图片 117    public class TestEntity
28图片 118图片 119    图片 120{
29图片 121        private int _ID;
30图片 122        private string _Name;
31图片 123
32图片 124        public int ID
33图片 125图片 126        图片 127{
34图片 128            get
35图片 129图片 130            图片 131{
36图片 132                return _ID;
37图片 133            }
38图片 134            set
39图片 135图片 136            图片 137{
40图片 138                _ID = value;
41图片 139            }
42图片 140        }
43图片 141
44图片 142        public string Name
45图片 143图片 144        图片 145{
46图片 146            get
47图片 147图片 148            图片 149{
48图片 150                return _Name;
49图片 151            }
50图片 152            set
51图片 153图片 154            图片 155{
52图片 156                _Name = value;
53图片 157            }
54图片 158        }
55图片 159    }
56图片 160}

此处十二分关键的是Line1贰和Line1六-二四,作为AjaxTemplate的usercontrol必须从NBear.Web.UI.AjaxTemplate继承,假若需求开始展览试数据初步化或然数额绑定,必须重载基类AjaxTemplate的OnAjaxTemplatePreRender()函数,注意,那里并非将代码写在usercontrol的Page_Load里,不然当作为AjaxTemplate时不会被实施。

ok,示例介绍到那边,上边照旧再说说AjaxHelper差距于1般的Ajax完成的规划思想!

AjaxHelper的特点

从AjaxHelper第三版伊始,AjaxHelper正是以一种不太1致的样式出现的。越发是在ASP.NET下,它应用ASP.NET的UserControl作为模版引擎,使得用户想经过ajax回调显示的情节能够直接借用usercontrol所怀有的全数可视化设计、ASP.NET通用组件、尤其是数据绑定的便宜,从而能够方便的将数据体现和操作分离,构成二个MVC的构造。AjaxHelper只是帮你传递模版的内容通过无刷新的异步callback获取数据,呈现到页面上钦命的职位依旧交给用户来拍卖。那样就简化了观念的不少Ajax完结仅仅传递XML格式数据,或者要求在后台手工业构造数据那样的那几个正视用户对数据的处理的难点。

配合NBear内置的JSON实现,更能够使得基于未来的NBear的Ajax开发,拥有更强的服务端和客户端交互能力。就好像NBear框架的欧洲经济共同体形象1样,不难易用。尤其是本次合并后的AjaxHelper,简化了旧有版本的繁琐的1些,完全不用例如httpmoudule或然在页面引用有些js文件等这么的布局,用户也得以选择是不是enable,更不会无故扩充页面包车型客车轻重和服务器处理的负担。

假诺你要求Ajax效果和价值观的ASP.NET控件结合使用,或为原有项目增添Ajax效果,而不是将总体项目总体构架思路都基于Atlas那样的构架重写,那么AjaxHelpler同样会是3个没有错的选用。

相关文章