2010-12-16 10 views
0

Ich verwende einen Dateimanager-Typ WebControl, der viele Postbacks durchführt. Es ist in einem Page platziert, das relativ komplex ist. Ich möchte verhindern, dass die WebControl verursacht die ganze Page den Lebenszyklus zu durchlaufen. Eine UpdatePanel hilft ein wenig, aber nicht genug.Seitenlebenszyklus für ein Steuerelement verhindern

Gibt es eine Möglichkeit, die WebControl vom Rest der Page zu isolieren? Der einzige Weg, an den ich denken kann, ist, die WebControl in einem separaten Page zu stecken und einen iframe im Original Page zu erstellen. Leider bedeutet das auch, dass meine WebControl Eigenschaften/Einstellungen nicht mehr im Original Page sind. Wenn ich zwei Instanzen der WebControl mit unterschiedlichen Einstellungen haben möchte, dann muss ich für jede Einstellung eine Page erstellen und die richtige in meiner iframes referenzieren. Nicht ganz so "Drag & Drop" wie ich möchte. Irgendwelche anderen Vorschläge?

Antwort

1

Schwer zu sagen, Sie können nicht verhindern, dass eine Kontrolle den Lebenszyklus durchläuft; ist es jedoch trotzdem zu erkennen, dass durch etwas zu tun, in jedem Event-Handler während eines bestimmten Seite Postbacks, verhindern Sie den Code vom Laufen wie: Mai

if (_shouldNotRun == true) 
    return; 

//Event handler code 

Im Wesentlichen herauszufinden, einen Weg, um anzuzeigen, ob die Steuerung ausgeführt werden soll eine Option sein. IFrame würde funktionieren, aber ja, Sie müssen sich mit den Problemen beschäftigen, die Sie erwähnt haben. Kannst du dem Problem mehr Punkte geben?

HTH.

+0

Es ist umgekehrt. Ich müsste einen Weg finden, um anzugeben, ob der Rest der Seite ausgeführt werden soll. Dies ist ein Dateimanager, also muss einfach ein Ordner erstellt, umbenannt usw. werden. Ich möchte nicht, dass der Rest der Seite einen einfachen Ordnerwechsel verlangsamt. Leider können einige Dinge nicht verhindert werden, wie das Erstellen der Kontrollstruktur ... –

+0

Nein, wenn Sie versucht haben, den Kontrollbaum zu ändern, erhalten Sie einen Fehler. Sie könnten ein verstecktes Feld verwenden, das von Javascript geschrieben wurde, um zu sagen, dass diese Aktion auf dem Client ausgeführt wurde. Wenn der Server zurückschlägt, können Sie dann das verborgene Feld (entweder das Steuerelement oder ein verstecktes Feld durch die Formularsammlung) überprüfen sollte den Rest der Seite laden können. –

1

Nicht 100% sicher, welche Ereignisse überschrieben werden können, die PostBack aufgerufen werden. Eine gute Quelle für den Lebenszyklus einer Seite (http://msdn.microsoft.com/en-us/library/ms178472.aspx)

Aber es klingt, als wäre es besser, Ihre Kontrolle neu zu erstellen, um Ajax zu erstellen Webservice fragt nach den Funktionen, die möglich sind, um die meisten Postbacks zu verhindern?

Cheers, Stefan

+0

Die Verwendung eines Web-Service wäre ideal, leider ist es nicht meine Kontrolle und es ist relativ komplex ... Ich werde sehen, ob ich alternative und einfache Wege finden kann, dies zu lösen ... –

Verwandte Themen