2013-03-21 18 views
8

Devo creare la casella di conferma nel controller mvc ?. Usando questo valore "sì" o "no" ho bisogno di eseguire l'azione nel mio controller. Come lo facciamo?Come creare la casella di conferma nel controller mvc?

codice di esempio:

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

È possibile farlo con Html.ActionLink ... –

+0

No. Ho qualche valore nel mio controller utilizzando questo valore ho bisogno di eseguire qualche azione. Un'altra opzione: inviare la richiesta al lato server e passare il valore yes o no al server utilizzando questa operazione eseguiremo l'azione – user279stack1

+1

@ user279stack1 cosa avete provato? che codice hai fatto? –

risposta

1

tu non dialogo Conferma nel controller creare, ma sì in una visualizzazione, utilizzando jQuery Dialog. Il controller è già all'interno del server, quindi non ci sono interventi da parte dell'utente. La tua vista, è il luogo dove l'utente sceglierà le opzioni, digita le informazioni, clicca sul pulsante ... Puoi intercettare il clic del pulsante, per mostrare quella finestra, e inviare il messaggio solo quando il pulsante "Sì" viene cliccato. La finestra di dialogo JQuery richiede (jquery.js, jquery-ui.js, jquery.ui.dialog.js) gli script di riferimento nella pagina.

Esempio:

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

Il .live non è necessario. Puoi semplicemente usare .click (function() {...}); – TiagoBrenck

+0

Ho bisogno di eseguire qualche azione nel mio controller \ – user279stack1

+0

Ho cambiato la funzione dei pulsanti. E 'quello di cui hai bisogno? – TiagoBrenck

4

si può fare questo con ActionLink

@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?')" }) 

Se la conferma dell'utente, quindi collegare il parametro passerà al metodo di azione del controller.

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(); 
} 

Aggiornamento

Non si può mostrare finestra di messaggio nel lato del controller. Ma si può fare questo come seguire

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

    return View(); 
} 

E vista

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

Ma questi tutti i codici non vengono modo elegante. Questa è la soluzione del tuo scenerio.

+0

Ancora +1. 42 secondi più veloce di me –

+0

controlla il mio ultimo post – user279stack1

+0

come eseguire il codice nel mio controller. – user279stack1

4

Sì, è possibile farlo con @Html.ActionLink come AliRıza Adıyahşi ha commentato.

Iscriviti al onclick caso di @Html.ActionLink

Ecco l'attuazione:

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

E in javascript scrivono casella confirm.

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

Modifica

Prova in questo modo:

<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" }) 

Ora nel controller fare alcune operazioni basate sul isTrue querystring

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

controlla il mio ultimo post – user279stack1

+0

@ user279stack1 controlla il post modificato –

1

posso confermare che Aliriza Adıyahşi di la soluzione funziona bene.

È anche possibile personalizzare il messaggio.Nel mio caso stiamo usando MVC e Razor, così ho potuto fare questo:

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

che ha mostrato un dialogo con un record specifico di nome in esso. Potrebbe anche essere possibile dare un titolo alla finestra di conferma, non averlo ancora provato.

Problemi correlati