2012-04-17 15 views
13

¿Puedo mostrar un mensaje de confirmación para ActionLink?MVC3 Actionlink con diálogo de confirmación

¿Necesito usar javascript? ¿Es posible sin eso?

¿Podría darme un ejemplo?

Gracias.

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

Respuesta

38

Uso de la sobrecarga Html.ActionLink(string linkText, string actionName, string controllerName, object RouteValues, object HtmlAttributes) y algo de JavaScript, puede hacer lo siguiente:

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

Esto añadirá el El atributo HTML onclick, que ejecutará el javascript especificado cuando se haga clic en el enlace. Si un evento onclick en un enlace (o el botón de envío de un formulario) devuelve falso, la acción (siguiendo el enlace, publicando el formulario) no ocurre. La función confirm(message) muestra al usuario un cuadro de diálogo de confirmación con el mensaje especificado y devuelve verdadero o falso dependiendo de la respuesta del usuario.

+0

+1: esto es lo que yo también haría –

+0

¡Gracias! ¡Solución fácil! – wholee1

1

Editar: no utilice esta respuesta, utilice el otro de Jim.

No podrá usar ActionLink - tendrá que escribir algo de JavaScript (como el listado here) para que aparezca una confirmación. Puede usar Url.Action para generar la URL que el javascript eventualmente usará para la publicación o para obtener el punto final.

Mi javascript está mal, pero creo que esto se le ocurre a través de:

<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 se puede seguir usando. Simplemente no puede hacer la confirmación por sí mismo. – yoozer8

+0

Guau, no lo sabía. Impresionante solución, +1 – eouw0o83hf

+0

Sí, ActionLink tiene un montón de sobrecargas (a veces puede ser complicado tratar de usar el correcto). Dado que RouteValues ​​y HtmlAttributes también son bastante flexibles, puede hacer bastante con ActionLink – yoozer8

0

En mi caso tuve un botón que ya se denomina una acción:

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

Después de leer la respuesta de Jim, cambiado a lo siguiente:

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

y funciona greate! Gracias Jim !!

Cuestiones relacionadas