Intercept-Weiterleitungen von UpdatePanel-Posts

8

Laut dem unten stehenden Link, wenn Sie eine 'Response.Redirect' während eines Posts innerhalb des Update-Panels ausführen, würde ein HTTPResponseCode von 200 und Ajax javascripty-Bibliotheken von dort aus den Benutzer auf eine Seite umleiten.

>

Ссылка

Ich schreibe jedoch ein Modul, in dem ich alle Weiterleitungen abfange und die URLs so ändere, dass sie einen Wert enthalten. Ich mache das während PreSendRequestContent-Ereignis. Unten ist mein Code

%Vor%

Gibt es eine Möglichkeit für mich, dasselbe während der oben genannten Weiterleitungen zu tun? Ich bin in Ordnung, dies sowohl auf der Client-Seite mit onEndRequest oder ähnliche Ereignisse und einige andere Modul-Ereignis auf der Serverseite zu tun

    
Kartheek N 07.01.2014, 05:57
quelle

2 Antworten

0

Hier ist eine schmutzige Lösung, die ich gefunden habe. Ich habe unten auf der Clientseite Code hinzugefügt.

%Vor%

Allerdings bin ich mit dieser Lösung nicht zufrieden und suche nach einem besseren Weg, bitte schlagen Sie einen anderen Weg vor.

    
Kartheek N 07.01.2014, 08:58
quelle
2

Ich habe ein wenig mit einem Updatepanel getestet, und soweit ich das beurteilen kann, können Sie feststellen, ob die Antwort von einem Updatepanel umgeleitet wird, indem Sie die Eigenschaft Response.IsRequestBeingRedirected . Diese Eigenschaft scheint sowohl beim Anzeigen von Weiterleitungen von innerhalb von updatepanels als auch bei regelmäßigen Weiterleitungen korrekt zu antworten. Das Problem ist, dass die Response.RedirectLocation, wenn die Antwort von einem Updatepanel umgeleitet wird, null ist, was bedeutet, dass Sie den tatsächlichen Inhalt der Antwort ändern müssen, um die URL zu ändern.

Das Ändern des Inhalts der Antwort ist ziemlich schwierig, da der Antwort-Ausgabestream schreibgeschützt ist, was bedeutet, dass Sie nicht einmal den Inhalt abrufen können, sie ändern und dann die Antwort überschreiben. Die einzige Möglichkeit, die ich gefunden habe, würde erfordern, dass Sie einen Filter an die Antwort anschließen, wie beschrieben Hier . Dies ist jedoch etwas involviert, erfordert ziemlich viel Code und der Filter muss vor PreSendRequestContent angeschlossen werden (ich weiß nicht genau wann, aber bevor ...), was bedeutet, dass Sie einen Filter schreiben müssten Dies bezieht sich auf die Antwort, um festzustellen, ob der Inhalt umgewandelt werden soll oder nicht.

Da der oben beschriebene Filter wie ein Overkill aussieht, könnten Sie vielleicht Ihr Javascript einfach mit einem Regex aufräumen:

%Vor%

Aber während der obige Regex auf meinen Test-URLs funktioniert, kann ich nicht garantieren, dass er für alles funktioniert.

Haben Sie eine statische / Erweiterung-Methode in Betracht gezogen, um die URL zu transformieren und nur an der Umadressierungsstelle aufzurufen?

%Vor%     
rusmus 14.01.2014 15:59
quelle

Tags und Links