Ext.Net也是一个很有名的前端框架,它构建于ExtJS之上,提供了一整套UI+AJAX的解决方案.通过对其源码的研究,了解其是如何实现这套AJAX的,对我们也是很有帮助的.

  1.静态的AJAX方法实现.

  当把[DirectMethod]标记标在一个静态方法上时,Ext.Net是通过HttpModule来截获Http请求实现的.具体的实现类为:DirectRequestModule类

  在应用程序生命周期的PostAcquireRequestState事件内中加入处理函数


public void Init(HttpApplication app)
{
    app.PostAcquireRequestState 
+= OnPostAcquireRequestState;
    app.PreSendRequestHeaders 
+= RedirectPreSendRequestHeaders;
}


  如果是AJAX请求且是静态AJAX方法则调用ProcessRequest方法

private void OnPostAcquireRequestState(object sender, EventArgs eventArgs)
{
    HttpApplication app 
= (HttpApplication)sender;
    HttpRequest request 
= app.Context.Request;

    
if (RequestManager.IsAjaxRequest)
    {
        
if (DirectMethod.IsStaticMethodRequest(request) /*|| Utilities.ReflectionUtils.IsTypeOf(app.Context.Handler, "System.Web.Script.Services.ScriptHandlerFactory+HandlerWrapper")*/)
        {
            
this.ProcessRequest(app, request);
        }
    }
}

相关文章: