Supprimer ActionLink avec la boîte de dialogue de confirmation

98

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

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

Cependant, il n'affiche pas la boîte de confirmation. Il me manque clairement quelque chose ou j'ai mal construit le lien. Quelqu'un peut-il aider?

Cameron
la source

Réponses:

211

Ne confondez pas routeValuesavec 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?');" }) 
%>
Darin Dimitrov
la source
16
Évitez de supprimer des enregistrements à la demande GET! stackoverflow.com/questions/786070/…
user1068352
6
Mauvaise mise en œuvre. Ne modifiez pas les données du serveur sur GET
Dan Hunex
il devrait sûrement être: new {id = item.storyId, onclick = "return confirm ('Êtes-vous sûr de vouloir supprimer cet article?');" })
Ravendarksky
Si nous ne sommes pas supposés supprimer en utilisant get, comment faire via le lien Action en utilisant POST?
Incassable
1
Appelez $ .Ajax si la confirmation est OUI?
Kiquenet
15

ce sont des routes que vous empruntez

<%= 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

chasseur
la source
15
<%= 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 «Confirmer» spécifie la case de confirmation javascript.

T Gupta
la source
4

Vous pouvez également personnaliser le en transmettant l'élément de suppression avec le message. Dans mon cas, en utilisant MVC et Razor, je pourrais donc le faire:

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

Essaye ça :

<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>
GirishBabuC
la source
3

En utilisant webgrid, vous pouvez le trouver ici , les liens d'action pourraient ressembler à ce qui suit.

entrez la description de l'image ici

    grid.Column(header: "Action", format: (item) => new HtmlString(
                     Html.ActionLink(" ", "Details", new { Id = item.Id }, new { @class = "glyphicon glyphicon-info-sign" }).ToString() + " | " +
                     Html.ActionLink(" ", "Edit", new { Id = item.Id }, new { @class = "glyphicon glyphicon-edit" }).ToString() + " | " +
                     Html.ActionLink(" ", "Delete", new { Id = item.Id }, new { onclick = "return confirm('Are you sure you wish to delete this property?');", @class = "glyphicon glyphicon-trash" }).ToString()
                )
Hedego
la source
1

Avec image et confirmation lors de la suppression, qui fonctionne sur Mozilla Firefox

<button> @Html.ActionLink(" ", "action", "controller", new { id = item.Id }, new { @class = "modal-link1", @OnClick = "return confirm('Are you sure you to delete this Record?');" })</button>
<style>
a.modal-link{ background: URL(../../../../Content/Images/Delete.png) no-repeat center;
            display: block;
            height: 15px;
            width: 15px;

        }
</style>
GirishBabuC
la source
1

Je voulais la même chose; un bouton de suppression sur ma vue Détails. J'ai finalement réalisé que je devais publier à partir de cette vue:

@using (Html.BeginForm())
        {
            @Html.AntiForgeryToken()
            @Html.HiddenFor(model => model.Id)
            @Html.ActionLink("Edit", "Edit", new { id = Model.Id }, new { @class = "btn btn-primary", @style="margin-right:30px" })

            <input type="submit" value="Delete" class="btn btn-danger" onclick="return confirm('Are you sure you want to delete this record?');" />
        }

Et, dans le contrôleur:

 // this action deletes record - called from the Delete button on Details view
    [HttpPost]
    public ActionResult Details(MainPlus mainPlus)
    {
        if (mainPlus != null)
        {
            try
            {
                using (IDbConnection db = new SqlConnection(PCALConn))
                {
                    var result = db.Execute("DELETE PCAL.Main WHERE Id = @Id", new { Id = mainPlus.Id });
                }
                return RedirectToAction("Calls");
            } etc
Antoine D
la source
0

entrez la description de l'image iciMVC5 avec dialogue de suppression et glyphicon. Peut fonctionner les versions précédentes.

@Html.Raw(HttpUtility.HtmlDecode(@Html.ActionLink(" ", "Action", "Controller", new { id = model.id }, new { @class = "glyphicon glyphicon-trash", @OnClick = "return confirm('Are you sure you to delete this Record?');" }).ToHtmlString()))
Terry H
la source
-1

Tout événement de clic avant la boîte de message de mise à jour / modification / suppression d'enregistrements alerte l'utilisateur et si «Ok», continuez pour l'action, sinon «annuler» reste inchangé. Pour ce code, pas besoin de corriger le code de script java séparé. ça marche pour moi

<a asp-action="Delete" asp-route-ID="@Item.ArtistID" onclick = "return confirm('Are you sure you wish to remove this Artist?');">Delete</a>

Seeni Abirami
la source
-2

Vous pouvez également essayer ceci pour Html.ActionLink DeleteId

Innocent Zondo
la source
3
Pouvez-vous expliquer un peu cette réponse? Peut-être fournir un extrait de code qui démontre votre suggestion ou décrire où cela devrait aller dans le code de l'OP?
skrrgwasme