2009-07-10 13 views
2

ich eine Web-Anwendung haben (.NET 3.5), die diesen Code in Global.asax hat:Überprüfen Sie, ob IsCallback auf Application_BeginRequest

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

ich diese Funktionen alle innerhalb wollen mit Ausnahme genannt werden, wenn es ein AJAX-Aufruf zurück. Also, idealerweise hätte ich es geändert zu:

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

Aber es gibt keinen Zugriff auf das Seitenobjekt hier. Also, im Grunde ist meine Frage:

Wie überprüfe ich, ob die Anfrage ein AJAX-Aufruf zurück in Application_BeginRequest ist?

Vielen Dank für Feedback.

Antwort

0

Aus meiner Sicht überprüft alles, was IsCallback tut, ob das Formular eine Post-Variable namens __CALLBACKARGUMENT hat. Sie könnten das Formular selbst in Context.Request.Form überprüfen und das sollte Ihnen dasselbe wie IsCallback sagen.

1

John,

Danke, dass Sie mich in die richtige Richtung weisen. Die Lösung besteht darin, nach Request.Form ("__ ASYNCPOST") zu suchen. Es ist auf "True" gesetzt, wenn es sich um ein CallBack handelt.

Vielen Dank für die Hilfe!

1

Sie sollten Zugriff auf das Objekt HttpContext.Current.Handler haben, das Sie in ein Page-Objekt umwandeln und Page.IsPostBack oder Page.IsCallBack abrufen können. Um dies sicher durchzuführen, müssen Sie zuerst testen, ob es ein Page-Objekt und nicht null ist:

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 
Verwandte Themen