wake-up-neo.com

ASP.NET vor dem Ausführen von Codebehind bestätigen

Ich habe ein Formular, in dem ein Benutzer einen Datensatz löschen kann, und ich möchte eine Popup-Nachricht, in der der Benutzer auf OK klicken muss, um das Löschen zu bestätigen.

Schaltfläche "Löschen":

<asp:Button ID="btnDelete" runat="server" Text="Delete" UseSubmitBehavior="false" OnClick="btnDelete_Click" OnClientClick="confirmation();" />

Bestätigungsfunktion:

function confirmation() {
        var answer = confirm("Are you sure you want to delete? This action cannot be undone.")
    }

Wenn Sie nun auf die Schaltfläche "Löschen" klicken, wird das Sub-Element "btnDelete_Click" im Code dahinter ausgeführt, unabhängig davon, ob Sie auf "OK" klicken oder das Popup-Feld abbrechen. Ich weiß, dass ich if (answer) {- etwas Code hier -} in meiner Javascript-Funktion hinzufügen kann, aber ist es möglich, Javascript zum Ausführen von Code aus dem Codebehind zu verwenden? Oder gibt es einen anderen Weg, dies zu tun?

13
Sara

Bitte versuchen Sie es wie folgt. Sie müssen das Ergebnis der Bestätigungsfunktion zurückgeben (true oder false).

<asp:Button 
    ID="btnDelete" 
    runat="server" 
    Text="Delete" 
    UseSubmitBehavior="false" 
    OnClick="btnDelete_Click" 
    OnClientClick="return confirmation();" />

function confirmation() {
    return confirm("Are you sure you want to delete?");
}
31
Thit Lwin Oo

Fügen Sie dies in Ihren ASPX-Code ein:

OnClientClick="return confirm('Are you sure you want to delete this project?');" 
9
Jim

bitte verwenden Sie dieses Beispiel:

<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="return ConfirmOnDelete();"/>

<script type="text/javascript">    
   function ConfirmOnDelete() {
    if (confirm("Do you really want to delete?") == true)
        return true;
    else
        return false;
   }
</script>
4
Ashwini Verma

Ich weiß, dass dies ein alter Beitrag ist, aber Sie können die obigen Antworten so in eine Zeile schreiben. Und Sie müssen nicht einmal die Funktion schreiben.

 <asp:Button runat="server" ID="btnDelete" Text="Delete" OnClick="btnDelete_Click" OnClientClick="if ( !confirm('Are you sure you want to delete ? ')) return false;"  />
3
Praveen Mitta

Wir können dies leicht mit ConfirmButtonExtender tun,

<ajaxToolkit:ConfirmButtonExtender ID="cbeDelete" TargetControlID="btnDelete" ConfirmText="Are you sure you want to delete? This action cannot be undone." runat="server">

Es ist sehr einfach...

3
thevan

1) Formularentwurf

<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>

2) Codebehind

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

3) Wenn Sie auf die Schaltfläche "Löschen" klicken, wird ein Bestätigungsfeld angezeigt.

4) Wenn Sie auf OK klicken, funktioniert OK Part im Code, sonst No Part

5) Dieselbe Methode in der GRIDVIEW DELETE-TASTE. 

0
Ratha Krishnan

Ein anderer Weg, dies zu erreichen, wäre die Verwendung des AJAX Toolkit ConfirmButton Extender, wie hier gezeigt:

http://www.ezineasp.net/Samples/ASP-Net-AJAX-cs/Control-Toolkit/AJAX-ConfirmButton-Control/Default.aspx

0
mellodev

Ich denke oben sollte funktionieren, wenn Sie es nicht mit Button verwenden können, versuchen Sie den <asp:link button>. Mein funktioniert gut. 

ASPX-Seite: -  

<asp:LinkButton  ID="takeActionBtn" CausesValidation="false" runat="server" 
        onclientclick="return confirm('Do you really want to perform Action ?');"> Take Action </asp:LinkButton>

VB Server-Code hinter: -

Protected Sub takeActionBtn_Click(ByVal sender As Object, ByVal e As EventArgs) Handles takeActionBtn.Click

End Sub

Eine Sache, die ich festgestellt habe, ist, dass, wenn Sie Control (Ascx) innerhalb einer Seite verwenden, Sie möglicherweise auf Seite oder Kontrollebene aus/einschalten müssen. AutoEventWireup="false" <%@ control in <%@ page 

Viel Glück !!

0
PatBad

Wenn Sie etwas Code auf der Serverseite ausfindig machen möchten, ohne den Beitrag tatsächlich zurückzuschicken, müssen Sie dazu ajax verwenden.

function confirmation() {
        var answer = confirm("Are you sure you want to delete? This action cannot be undone.")
        if(answer)
        {
           $.post("ajaxserverpage.aspx?item=34",function(data){
              alert(data); 
          });
        } 
        return false; 
    }

und haben eine Seite mit dem Namen ajaxserverpage.aspx. Überprüfen Sie die Abfragezeichenfolge und führen Sie den entsprechenden serverseitigen Code aus 

   protected void Page_Load(object sender, EventArgs e)
   {
        if (Request.QueryString["item"] != null)
        {
          // read the item and do your stuff here
         Response.Write("Deleted succssfully");
         Response.End();
        }
    }

Sie können auch generic handler (.ashx) anstelle der ASPX-Datei für die Verarbeitung auf der ajax-Serverseite verwenden. Ich würde diese Methode vorziehen.

0
Shyju

Sie können einfach setzen:

onclientclick = "return (window.confirm('text message'));

auf der ASPX-Seite wird dasselbe getan.

0
Garry_G