2013-03-21 6 views
8

Ich muss das Bestätigungsfeld in MVC-Controller erstellen ?. Mit diesem "Ja" oder "Nein" Wert muss ich die Aktion in meinem Controller durchführen. Wie machen wir das?Wie erstelle ich das Bestätigungsfeld in mvc controller?

Beispielcode:

public ActionResult ActionName(passing value) 
     { 
      // some code 
      message box here 
       if (true) 
        { true code} 
       else { else code} 
     } 
+0

Sie können dies mit Html.ActionLink tun ... –

+0

Nein. Ich habe einen Wert in meinem Controller mit diesem Wert, den ich brauche, um etwas zu tun. Eine weitere Option: Senden Sie die Anfrage an die Server-Seite und übergeben Sie die Ja oder Nein-Wert an den Server mit diesem wir werden die einige Aktion ausführen – user279stack1

+1

@ user279stack1 Was haben Sie versucht? Welchen Code hast du gemacht? –

Antwort

1

Sie nicht bestätigt Kästchen-Controller erstellen, aber ja in einer Ansicht, mit JQuery Dialog. Der Controller befindet sich bereits im Server, sodass Sie dort keine Benutzereingriffe vornehmen müssen. Ihre Ansicht, ist der Ort, den der Benutzer wählen wird Optionen, Informationen eingeben, klicken Sie auf die Schaltfläche ... Sie können die Schaltfläche klicken, um diesen Dialog anzuzeigen, und senden Sie nur die Post, wenn der Button "Ja" geklickt wird. JQuery Dialog benötigt Skripte (jquery.js, jquery-ui.js, jquery.ui.dialog.js), auf die auf Ihrer Seite verwiesen wird.

Beispiel:

$(function(){ 
    $("#buttonID").click(function(event) { 
     event.preventDefault(); 
     $('<div title="Confirm Box"></div>').dialog({ 
      open: function (event, ui) { 
       $(this).html("Yes or No question?"); 
      }, 
      close: function() { 
       $(this).remove(); 
      }, 
      resizable: false, 
      height: 140, 
      modal: true, 
      buttons: { 
       'Yes': function() { 
        $(this).dialog('close'); 
        $.post('url/theValueYouWantToPass'); 

       }, 
       'No': function() { 
        $(this).dialog('close'); 
        $.post('url/theOtherValueYouWantToPAss'); 
       } 
      } 
     }); 
    }); 
}); 
+0

Die .Live ist nicht notwendig. Sie können einfach .click (function() {...}); – TiagoBrenck

+0

Ich muss die Aktion in meinem Controller durchführen \ – user279stack1

+0

Ich habe die Tastenfunktion geändert. Ist das was du brauchst? – TiagoBrenck

4

Sie können dies tun mit Action

@Html.ActionLink(
    "Delete", 
    "DeleteAction", 
    "Product", 
    new { confirm = true, other_parameter = "some_more_parameter" }, 
    new { onclick = "return confirm('Do you really want to delete this product?')" }) 

Wenn der Benutzer bestätigt, dann Parameter verlinken auf die Controller-Aktion-Methode übergeben werden.

public ActionResult DeleteAction(bool confirm, string other_parameter) 
{ 
    // if user confirm to delete then this action will fire 
    // and you can pass true value. If not, then it is already not confirmed. 

    return View(); 
} 

aktualisieren

Sie nicht Meldungsfeld in Controller-Seite anzeigen kann. Aber Sie können dies tun, wie

folgende
public ActionResult ActionName(passing value) 
{ 
    // some code 
    message box here 
    if (true){ ViewBag.Status = true } 
    else { ViewBag.Status = false} 

    return View(); 
} 

Und Ansicht

<script type="text/javascript"> 
function() { 
    var status = '@ViewBag.Status'; 
    if (status) { 
     alert("success"); 
    } else { 
     alert("error"); 
    } 
} 
</script> 

Aber diese alle Codes sind nicht elegante Weise. Dies ist die Lösung Ihres Szenarios.

+0

Wieder +1. 42 Sekunden schneller als ich –

+0

überprüfen Sie meine neueste Post – user279stack1

+0

, wie Code in meinem Controller durchführen. – user279stack1

4

Ja, Sie können dies mit @Html.ActionLink tun, wie AliRiza Adıyahşi kommentiert hat.

Abonnieren Sie den onclick Ereignis des @Html.ActionLink

ist die Umsetzung:

@Html.ActionLink("Click here","ActionName","ControllerName",new { @onclick="return Submit();"}) 

Und in Javascript schreiben die confirm Box.

<script type="text/javascript"> 
function Submit() { 
     if (confirm("Are you sure you want to submit ?")) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
</script> 

bearbeiten

wie diese versuchen:

<script type="text/javascript"> 
    function Submit() { 
      if (confirm("Are you sure you want to submit ?")) { 
       document.getElementById('anchortag').href += "?isTrue=true"; 
      } else { 
       document.getElementById('anchortag').href += "?isTrue=false"; 
      } 
      return true; 
     } 
</script> 

@Html.ActionLink("Submit", "Somemethod", "Home", new { @onclick = "return Submit();", id = "anchortag" }) 

Jetzt in Ihrem Controller auf einige Operationen basierend haben die isTrue Abfragezeichen

public ActionResult Somemethod(bool isTrue) 
     { 
      if (isTrue) 
      { 
       //do something 
      } 
      else 
      { 
       //do something 
      } 
      return View(); 
     } 
+0

Überprüfen Sie meine neueste Post – user279stack1

+0

@ user279stack1 überprüfen Sie den bearbeiteten Post –

1

Ich kann bestätigen, dass Aliriza Adıyahşi des Lösung funktioniert gut.

Sie können die Nachricht auch anpassen.In meinem Fall sind wir mit MVC und Razor, so konnte ich dies tun:

<td> 
@Html.ActionLink("Delete", 
    "DeleteTag", new { id = t.IDTag }, 
    new { onclick = "return confirm('Do you really want to delete the tag " + @t.Tag + "?')" }) 
</td> 

, die einen Dialog mit einem bestimmten Datensatz in ihm benannt zeigten. Möglich wäre auch, dem Bestätigungsdialog einen Titel zu geben, habe das noch nicht ausprobiert.

Verwandte Themen