2012-04-17 15 views
13

Posso visualizzare un messaggio di conferma per ActionLink?MVC3 Actionlink con finestra di dialogo di conferma

Devo usare javascript? È possibile senza di esso?

Potresti dare qualche esempio per me?

Grazie.

//I want to make a confirmation message appear before the link opens. 
@Html.ActionLink("Checkout and view order list", "Order", "Order") 

risposta

38

Utilizzando il sovraccarico Html.ActionLink(string linkText, string actionName, string controllerName, object RouteValues, object HtmlAttributes) e alcuni JavaScript, è possibile effettuare le seguenti operazioni:

@Html.ActionLink("Checkout and view order list", "Order", "Order", null, new { onclick="return confirm('Are you sure you want to click this link?')" }) 

Questo aggiungerà la Attributo HTML onclick, che eseguirà il javascript specificato quando viene fatto clic sul collegamento. Se un evento onclick su un link (o il pulsante di invio di un modulo) restituisce false, l'azione (seguendo il collegamento, la pubblicazione del modulo) non avviene. La funzione confirm(message) mostra all'utente una finestra di dialogo di conferma con il messaggio specificato e restituisce true o false a seconda della risposta dell'utente.

+0

+1: questo era quello che avrei fatto anch'io –

+0

Grazie! Soluzione facile! – wholee1

1

Edit: non utilizzare questa risposta, utilizzare l'altra da Jim.

Non sarà possibile utilizzare ActionLink - sarà necessario scrivere alcuni JavaScript (come quello elencato here) per far apparire una conferma. È possibile utilizzare Url.Action per generare l'URL che il javascript utilizzerà per il post o ottenere endpoint.

mio javascript è male, ma penso che questo ottiene l'idea attraverso:

<a href="javascript:confirmation();">Checkout and view order list</a> 

<script> 
function confirmation() { 
var answer = confirm("Confirm?") 
if(answer) { 
    // Do something here, post or get 
    window.location = @Url.Action("Order", "Order"); 
} 
} 
</script> 
+0

ActionLink può ancora essere utilizzato. Non può fare la conferma da sola. – yoozer8

+0

Wow, non lo sapevo. Impressionante soluzione, +1 – eouw0o83hf

+0

Sì, ActionLink ha un sacco di sovraccarichi (a volte può diventare complicato cercare di usare quello giusto). Poiché RouteValues ​​e HtmlAttributes sono abbastanza flessibili, puoi fare un bel po 'di azione con ActionLink – yoozer8

0

Nel mio caso ho avuto un pulsante che già chiamato un'azione:

<input id="ButtonDelete" type="button" value="Delete Experiment" class="big-nevigation-button" onclick="location.href='@Url.Action("DeleteExperiment", "Experiment", new { experimentId = Model.ExperimentId })'" /> 

Dopo aver letto la risposta di Jim, ho cambiato la seguente:

<input id="ButtonDelete" type="button" value="Delete Experiment" class="big-nevigation-button" onclick="if (confirm('Are you sure you want to delete experiment???')) location.href='@Url.Action("DeleteExperiment", "Experiment", new { experimentId = Model.ExperimentId })'" /> 

e funziona greate! Grazie Jim !!

Problemi correlati