Das Dialogfeld wird nicht angezeigt

Aug 26 2020

Wenn ich mich abmelde, möchte ich, dass ein Dialogfeld angezeigt wird, in dem Sie sicher sind, und wenn der Benutzer auf Ja klickt, wird er sich abmelden und den Cache leeren - aber es wird nie angezeigt, die Website wird einfach weiter geladen. Kann mir jemand sagen warum?

   public void logout_click(object sender, EventArgs args)
    {


        var message = "Items in basket will be lost";
        var title = "Are you sure?";
        var result = MessageBox.Show(
            message,                  // the message to show
            title,                    // the title for the dialog box
            MessageBoxButtons.YesNo,  // show two buttons: Yes and No
            MessageBoxIcon.Question); // show a question mark icon


        if (result == DialogResult.Yes)
        {


            Session.Clear();
            Session.Abandon();
            Session.RemoveAll();
            FormsAuthentication.SignOut();
            Roles.DeleteCookie();



        }
    }

Antworten

2 KonstantinBorisov Aug 26 2020 at 14:39

Sieht so aus, als würden Sie versuchen, Windows.Forms MessageBox in ASP.NET zu verwenden. Es wird nicht funktionieren. Sie müssen die Bestätigung in Javascript implementieren. So etwas wie hier: Wie zeige ich MessageBox auf asp.net?

PurveshSangani Aug 27 2020 at 13:51

HTML MArkup

Das HTML-Markup besteht aus einem ASP.Net-Button btnConfirm. Der Schaltfläche wurde ein OnClick- und OnClientClick-Ereignishandler zugewiesen.

Wenn Sie auf die Schaltfläche klicken, löst das Ereignis OnClientClick die JavaScript Confirm-Methode aus.

Innerhalb der JavaScript Confirm-Methode wird die vom Benutzer bereitgestellte Eingabe in einem dynamisch erstellten ausgeblendeten Feld gespeichert, dh wenn OK gedrückt wird, wird der Wert Ja gespeichert und wenn Abbrechen gedrückt wird, wird Nein gespeichert, damit die Benutzereingaben an den serverseitigen Code übergeben werden können .

Dann führt der Button das normale PostBack aus und löst den OnClick-Ereignishandler aus.

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script type = "text/javascript">
        function Confirm() {
            var confirm_value = document.createElement("INPUT");
            confirm_value.type = "hidden";
            confirm_value.name = "confirm_value";
            if (confirm("Do you want to save data?")) {
                confirm_value.value = "Yes";
            } else {
                confirm_value.value = "No";
            }
            document.forms[0].appendChild(confirm_value);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
      <asp:Button ID="btnConfirm" runat="server" OnClick="OnConfirm" Text="Raise Confirm" OnClientClick="Confirm()"/>
    </form>
</body>
</html>

Abrufen der Benutzereingaben auf der Serverseite

In der Ereignisbehandlungsroutine OnConfirm Click wird die Benutzereingabe abgerufen, die im dynamischen ausgeblendeten Feld aus der Request.Form-Auflistung gespeichert wurde.

Basierend darauf, ob der Benutzer OK ausgewählt oder eine andere Nachricht abgebrochen hat, wird das JavaScript-Warnmeldungsfeld angezeigt.

C #

public void OnConfirm(object sender, EventArgs e)
{
    string confirmValue = Request.Form["confirm_value"];
    if (confirmValue == "Yes")
    {
        this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked YES!')", true);
    }
    else
    {
        this.Page.ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('You clicked NO!')", true);
    }
}