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?

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

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


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.


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

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>

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

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>

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

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

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


-2

Vous pouvez également essayer ceci pour Html.ActionLink DeleteId


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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.