103 votes

Supprimer l'ActionLink avec un dialogue de confirmation

J'essaie d'implémenter une simple ActionLink qui supprimera les enregistrements en utilisant ASP.NET MVC. Voici ce que j'ai fait jusqu'à présent :

<%= Html.ActionLink("Delete", 
                    "Delete", 
                    new { id = item.storyId, 
                          onclick = "return confirm('Are you sure?');" 
                        })%> 

Cependant, la boîte de confirmation ne s'affiche pas. Il est clair qu'il me manque quelque chose ou que j'ai mal construit le lien. Quelqu'un peut-il m'aider ?

218voto

Darin Dimitrov Points 528142

Ne confondez pas routeValues con htmlAttributes . Vous voulez probablement cette surcharge :

<%= Html.ActionLink(
    "Delete", 
    "Delete", 
    new { id = item.storyId }, 
    new { onclick = "return confirm('Are you sure you wish to delete this article?');" }) 
%>

18 votes

Évitez de supprimer des enregistrements à la demande de GET ! stackoverflow.com/questions/786070/

7 votes

Mauvaise implémentation. Ne pas modifier les données du serveur sur GET

0 votes

Il devrait sûrement être : new { id = item.storyId, onclick = "return confirm('Are you sure you wish to delete this article?') ;" })

15voto

hunter Points 33850

Ce sont les routes que vous passez dans

<%= Html.ActionLink("Delete", "Delete",
    new { id = item.storyId }, 
    new { onclick = "return confirm('Are you sure you wish to delete this article?');" })     %>

La méthode surchargée que vous recherchez est celle-ci :

public static MvcHtmlString ActionLink(
    this HtmlHelper htmlHelper,
    string linkText,
    string actionName,
    Object routeValues,
    Object htmlAttributes
)

http://msdn.microsoft.com/en-us/library/dd492124.aspx

15voto

T Gupta Points 209
<%= Html.ActionLink("Delete", "Delete",
    new { id = item.storyId }, 
    new { onclick = "return confirm('Are you sure you wish to delete this article?');" })     %>

Le code ci-dessus ne fonctionne que pour Html.ActionLink.

Pour

Ajax.ActionLink

utilisez le code suivant :

<%= Ajax.ActionLink(" ", "deleteMeeting", new { id = Model.eventID, subid = subItem.ID, fordate = forDate, forslot = forslot }, new AjaxOptions
                                            {
                                                Confirm = "Are you sure you wish to delete?",
                                                UpdateTargetId = "Appointments",
                                                HttpMethod = "Get",
                                                InsertionMode = InsertionMode.Replace,
                                                LoadingElementId = "div_loading"
                                            }, new { @class = "DeleteApointmentsforevent" })%>

L'option "Confirmation" spécifie une boîte de confirmation en javascript.

5voto

Abu Hamzah Points 4395

Vous pouvez également personnaliser cette fonction en passant l'élément de suppression avec le message. Dans mon cas, j'utilise MVC et Razor, ce qui me permet de faire cela :

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

4voto

GirishBabuC Points 454

Essayez ceci :

<button> @Html.ActionLink(" ", "DeletePhoto", "PhotoAndVideo", new { id = item.Id }, new { @class = "modal-link1", @OnClick = "return confirm('Are you sure you to delete this Record?');" })</button>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X