先做好準備工作:把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,還沒有試過自訂控制項,不知道會不會出問題。