Frage

Wie die Alertbox erster zeigen, und dann abmelden

if (machineID.Count != 0)
            {

                checkMachineGrpState(machineID);
        else
                {
                    Response.Write("<script>alert('You are being logged out')</script>");

                   GoSignOut();
                }
    }

 private void GoSignout()
    {
        FormsAuthentication.SignOut();
        Session.Abandon();
        Response.Redirect("~/Default.aspx");
    }

hier, wenn ich die GosignOut Funktion aufrufen, nicht, dass ich das Warnfeld sehen kann, aber sobald ich die signout setzen nennen es zeigt mir nicht die Alertbox und einfach abmeldet

Also ich denke mich, ob es einen Weg gibt, ich zum ersten Mal die Alertbox sehen kann und dann, wenn ich OK drücken sollte es signout Funktion in meinem Code hinter ... Dank nennen

War es hilfreich?

Lösung

verwenden, um den clientclick der Server-Seite-Taste, die diesen Abmelde Code aufruft, dann return true

z.

<asp:Button id="button1" runat="server" OnClientClick="javascript:alert('You are being logged out');return true;" />

bearbeiten re darüber nachgedacht, was Sie wollen. versuchen, dies habe ich nicht mit dem Einsatz von Session.Abandon und dem SignOut getestet (die Sie auf die Login-Seite erzwingen können)

if (machineID.Count != 0)
            {

                checkMachineGrpState(machineID);
        else
                {
                   GoSignOut();
                  Page.ClientScript.RegisterStartupScript(this.GetType(), "Redirect", "<script>alert('You are being logged out');window.location.href='" + ResolveUrl("~/Default.aspx") + "';</script>");
                }
    }

 private void GoSignout()
    {
        FormsAuthentication.SignOut();
        Session.Abandon();
    }

Wenn Sie die Umleitung zu ermöglichen, auf eine andere Seite als die Login-Seite zu gehen (die aufgrund der SignOut gezwungen wird) Sie so etwas wie die unten an Sie web.config hinzufügen können. Ich bin nicht 100% sicher, dass Sie dies ermöglichen, da es keine authentifizierten Benutzern erlauben würde, auf die Seite zuzugreifen

<location path="whateverpage.aspx">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

Andere Tipps

wird Response.write Sachen an den Browser schreiben und wenn der Browser lädt die Seite, es, dass die Daten analysieren (Render html und führen js). Keine weitere Kommunikation oder ein Feedback an den Server vorgestellt (das ist, wo Ihr asp.net Webforms Code ausgeführt), ohne den Browser auf den Server über ein GET oder POST (Formular-Vorlage, Link, Ajax) in Kontakt bringen.

Was passiert, ist, Sie Ausgabe an den Client richten, aber dann sofort Response.Redirect Aufruf, so dass der Client nie Ihre Ausgabe wird. Stattdessen wird nur sofort umgeleitet und zeigt dann die default.aspx-Seite.

Was Sie tun können, ist nach wie vor die Umleitung tun, aber einige Daten an das Client übergeben (die Abfragezeichenfolgeflag wäre ein Weg, dies zu tun) und dann würde die default.aspx Seite weiß für diese Daten zu suchen. Wenn diese Daten gefunden wird, wäre es eine Aktion erforderlich abzuschließen. In Ihrem Fall sollten Sie es den Benutzer aufmerksam zu machen.

Eine Möglichkeit, dies zu tun, ist durch Umlenken auf "~ / Default.aspx? Alert = 1". In default.aspx, auf Pageload wäre es zum Abfragezeichenfolgeflag und sehen, ob die Alarm-Taste mit dem Wert 1 gibt Wenn das der Fall wäre, würde es für Ihre Warnung durchführt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top