2010-03-22 17 views

Antwort

25

Technisch könnten Sie nur die aktuelle IHttpHandler für die Anfrage bekommen. Da Page das implementiert, können Sie überprüfen, ob es eins ist.

var page = HttpContext.Current.CurrentHandler as Page; 

if(page != null){ 
    // Do something with page 
} 
7

können Sie HttpContext.CurrentHandler verwenden, um die aktuellen Httphandler für die Anforderung zurückzukehren. Eine Page-Klasse ist einfach eine komplexe Art von HttpHandler.

Um auf alle Seiteneigenschaften zugreifen zu können, müssen Sie das Ergebnis in den Typ Page umwandeln.

Ehrlich gesagt, würde ich Jeffs Ansatz nehmen, wenn möglich, da durch die angegebenen Seiten in dem Methodenaufruf Injizieren Ihre Methode ist viel mehr prüfbar (nicht zuverlässig zu erwähnen, wie Sie Seite direkt verwenden können). Sich auf irgendetwas zu verlassen, das mit HttpContext zu tun hat, tendiert dazu, deinen Code untestabel zu machen. Vielleicht sind Sie in einer Situation, in der Sie die Methode nicht so entwerfen können, aber es wäre die Art, wie ich es vorziehen würde.

+0

Einverstanden, ich habe den starken Verdacht, dass httpcontext ein Problem ist, wenn es um Threading geht. – maxp

2

Der einfachste Weg besteht darin, die aktuelle Seite als Parameter an die Methode zu übergeben, die Sie in der statischen Klasse aufrufen.

+0

Yep wahrscheinlich 'sauberste', Schande ist es begraben etwa 5 Methode ruft tief ... – maxp

+0

Yuck! HttpContext.Current ist es dann, es sei denn du hast die Möglichkeit umzuforsten. –

Verwandte Themen