2009-07-10 61 views
2

我有一個Web應用程序(.NET 3.5):檢查是否具有此代碼在Global.asax中IsCallback上的Application_BeginRequest

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs) 
    LinkLoader() 
    PathRewriter() 
    PathAppender() 
End Sub 

我希望所有這些功能裏面被調用,除了當它是一個AJAX調用背部。所以,理想情況下,我將它改爲:

Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs) 
    If not Page.IsCallback then 
     LinkLoader() 
     PathRewriter() 
     PathAppender() 
    End If 
End Sub 

但是在這裏沒有對頁面對象的訪問。所以,基本上我的問題是:

如何檢查請求是否是Application_BeginRequest內部的AJAX回調?

非常感謝您的任何反饋意見。

回答

0

從我的理解,所有IsCallback所做的是檢查表單是否具有名爲__CALLBACKARGUMENT的後置變量。你可以在Context.Request.Form中自己檢查表單,它應該告訴你與IsCallback相同的內容。

1

John,

感謝您指引我正確的方向。解決方案實際上是檢查Request.Form(「__ ASYNCPOST」)。如果它是一個CallBack,它將被設置爲「true」。

非常感謝您的幫助!

1

您應該有權訪問HttpContext.Current.Handler對象,您可以將其轉換爲Page對象並獲取Page.IsPostBack或Page.IsCallBack。雖然爲了安全地執行此操作,您需要先測試它是否爲Page對象,而不是空值:

With HttpContext.Current 
    If TypeOf .Handler Is Page Then 
     Dim page As Page = CType(.Handler, Page) 
     If page IsNot Nothing AndAlso (page.IsCallBack OrElse page.IsPostBack) Then 
     'Do something 
     End If 
    End If 
End With 
相關問題