先做好准备工作:把AjaxCallObject.js复制到虚拟目录下的script目录下(在配置信息中与此对应),项目中添加MagicAjax.dll(官网地址是:http://www.magicajax.net/)
1,需要WEB.CONFIG中 加入配置信息
<magicAjax
outputCompareMode="HashCode"
tracing="false" scriptPath="~/aspnet_client/magicAjax" >
<pageStore
mode="NoStore"
unloadStoredPage="false"
cacheTimeout="5"
maxConcurrentPages="5"
maxPagesLimitAlert="false"
/>
</magicAjax>
<httpModules>
<add name="MagicAjax" type="MagicAjax.MagicAjaxModule, MagicAjax" />
</httpModules>
2,使用AJAXPANNEL实现AJAX功能,在aspx中差不多是这样的:
<%@Register TagPrefix="ajax" Namespace="MagicAjax.UI.Controls" Assembly="MagicAjax" %>
<ajax:AjaxPanel id="AjaxPanel1" runat="server">
</ajax:AjaxPanel>
3,把需要无刷新的控件放进AJAXPANNEL
4,对拖入的控件编写委托事件
5,MAGICAJAX处理刷新实际使用AJAXCALL,这个类似于POSTBACK ,但它只针对于 AJAXPANNEL中的控件,而且CALLPACK时有一个LOADING指示。可以用MagicAjaxContext.Current.IsAjaxCall判断是否是AJAXCALL事件(客户端引发事件)或者用MagicAjaxContext.Current.IsAjaxCallForPage (TRANSFER引发)
6,为了解决中文乱码问题,可以重新编译源代码,打开MagicAjaxModule.cs文件,看到
protected void Application_BeginRequest(object sender, EventArgs e)
{
HttpContext context = ((HttpApplication)sender).Context;
// Init private fields
_threadAbortExceptionThrown = false;
_request = context.Request;
_response = context.Response;
_response.ContentEncoding = System.Text.Encoding.GetEncoding("GB2312");//加入这个支持中文
//..........................................................
7,通过AjaxCallHelper提供很多静态方法 ,不过还没怎么有机会用
8,当浏览器不支持JS页面也不会报错和变形,这个还不错。
9,还没有试过自定义控件,不知道会不会出问题。