5 Stimmen

Neues Fenster bei Postback öffnen

Anforderungen: Wir haben ein Formular, das die Benutzer einreichen können. Bei der Übermittlung werden die Formulardaten für Berechnungen und die Erstellung von Berichten verwendet.

Beim Postback werden eine Bestätigungsmeldung und weitere Optionen angezeigt. Wir möchten den Bericht in einem neuen Fenster/Tab anzeigen.

Bedingungen: Wir wollen kein JavaScript beim Postback verwenden, um ein neues Fenster zu öffnen. onload da dies Benutzer, die JavaScript deaktiviert haben, aufhält.

Mögliche Lösungen:

  1. Öffnen Sie beim Klicken auf eine Schaltfläche ein neues Fenster mit einer eindeutigen ID (lassen Sie das Postback für die Codeausführung geschehen). Das neue Fenster sollte einen Bericht anfordern, aber der Code wartet, bis der Bericht erstellt ist. Zeigen Sie auf der Berichtsseite eine Wartemeldung an, die eine Zeitüberschreitung anzeigt und es dem Benutzer ermöglicht, die Seite zu aktualisieren oder in der Meta-Ansicht zu aktualisieren.
  2. Verwenden Sie JavaScript, aber erkennen Sie, ob JS beim Postback aktiviert ist (durch Setzen eines Variablenwerts mit JS beim Laden des Formulars), wenn JS deaktiviert ist, zeigen Sie dem Benutzer einen Link für einen Bericht, sonst öffnen Sie ein Fenster mit JS beim Laden der Seite nach dem Postback.

Fragen:

  1. Gibt es eine bessere Möglichkeit, dies zu tun?
  2. Haben Sie Tipps zur Verbesserung der oben genannten Lösungen?
  3. Welches würden Sie bevorzugen und warum?

2voto

BrunoLM Punkte 93432

Verknüpfen Sie sich mit target=_blank die zu einer Seite weiterleitet, die den Bericht erstellt und ihn dann anzeigt.

IMO müssen Benutzer, die auf Ihre Website zugreifen wollen, Javascript aktiviert haben. Das Web ohne Javascript ist kein Web, vielleicht war es vor ein paar Jahren, aber jetzt...

Wenn Sie für js testen wollen, können Sie ein Skript nach dem Postback registrieren:

// normal postback
ScriptManager.RegisterStartupScript(this, GetType(), "key", "script();", true);

// postback from a updatepanel
ScriptManager.RegisterStartupScript(updatePanel, updatePanel.GetType(), "key", "script();", true);

1voto

Vinay Pandey Punkte 8006

Prüfen, ob js ist aktiviert , und wenn js aktiviert ist, verwenden Sie ClientScript.RegisterStartupScript(this.GetType(), "yourScript", script, true); um Ihre js auszuführen und Ihre Berichtsseite zu öffnen. Wenn js id nicht aktiviert ist, zeigen Sie einen Link zu der Berichtsseite.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X