J'ai un @ ajax.actionLinkLink qui appelle une action de suppression. Maintenant, je souhaite utiliser la boîte de dialogue JQuery UI confirmer à la place l'attribut "Confirmer" régulier de la liaison AJAX. Je connecte l'événement à l'ajax.actionLink en utilisant le JavaScript discret. Mais l'action est soumise et l'e.preventdefault (); traverse une erreur. Quelqu'un peut-il me dire pourquoi cela se produit?
Voici mon code JQuery: p> Voici mon code MVC: P>
@Ajax.ActionLink("Delete", "DeleteConfirmed", new { id = item.Id },
new AjaxOptions
{
HttpMethod = "POST",
OnSuccess = "refreshList"
},
new {data_dialog_confirm="true" }
)
6 Réponses :
Essayez cela à la place:
$("[data-dialog-confirm]").click(function (e) { var theHREF = $(this).attr("href"); $("#dialog-confirm").dialog('option', 'buttons', { "Delete this item": function () { window.location.href = theHREF; $(this).dialog("close"); }, "Cancel": function () { $(this).dialog("close"); } }); $("#dialog-confirm").dialog("open"); return false });
Phil, merci pour la réponse. Je l'ai fatigué et j'ai également changé le httpport sur httpdelete. Comme il s'agit d'un ajax.actionLink, il doit exécuter l'événement JavaScript au lieu de window.location.href = thehref; Cette ligne transmet en fait la page à l'URL / Catégorie / Deleteconfirmière / 345 où 345 est l'ID de l'élément à supprimer. Savez-vous ce que le JavaScript doit être exécuté à la place de la fenêtre.Locaiton.href = thehref?
J'ai fini par faire ceci:
Modifier le Voici le code: p> voici le MVC 3 ActionLink P> ajax.actionLink code> vers
html.actionLink code> et dans mon code javascript, j'appelle
$. Obtenez (thehref, null, fonction () {RECOMMISTRIST () {RECOMMISTER ()}) ; code>
@Html.ActionLink("Delete", "DeleteConfirmed", "Category", new { id = item.Id }, new
{
data_dialog_confirm = "true"
})
Voici comment j'ai implémenté la fonctionnalité de confirmation avec JQUERY UI:
@Html.ActionLink("Delete", "UpdateDelete", new { id = item.Id }, new { @class = "deleteLink" })
Hamid merci pour la réponse. Je fais tout cela ajax basé. Donc, à l'origine, je l'avais comme @ ajax.actionLinkink et cela ne tirerait pas l'alerte. Donc j'ai changé html.actionLink et ensuite à l'intérieur de ma boîte de dialogue Fermer Fuciton de JavaScript, je fais un appel Ajax pour supprimer le disque. Tout cela fonctionne bien maintenant.
@Hamid, excellente solution, mais comment cela est censé fonctionner lorsqu'il y a un paramètre / objet à renvoyer au serveur?
Peut-être que vous pouvez essayer d'appeler une fonction de confirmation à partir du onebegin code> événement d'Ajax.actionLink? De cette façon, vous pouvez continuer à utiliser l'ajax.actionLink. L'ONBEGIN est même marqué comme
data-ajax-begn-begnt (code> Attribut de JQUERY AFFREZ "renvoyer votre fichierConfirmation ()" à cet attribut et ça devrait aller bien. Voici un exemple d'utilisation de Onbegin pour la confirmation de dialogue sans jquery. p>
vous MIGTH Utilisez la propriété onebegin code> à la place
onsuccess code>, il s'agit simplement d'un exemple simple, mais cela pourrait vous aider, voici comment je déclare mon
ajax.actionLink CODE> LINK:
<script>
function confirmDeletion (e) {
// Do something or validate inputs...
e.preventDefault(); // This should prevent the event to fire...
};
</script>
Aucun événement n'est passé dans ConfirmDeletion pour que vous préveniez.
J'ai trouvé qu'il était beaucoup plus facile de le faire à l'aide d'une forme séparée, contenant les données post-post et un bouton qui affiche la boîte de dialogue, puis soumet la forme.
cshtml (rasoir): P>
function ShowConfirmDlgThenSubmitForm(dialogId, formId) { $('#' + dialogId).dialog({ resizable: false, height: 180, modal: true, buttons: { "Okay": function () { $(this).dialog("close"); $('#' + formId).submit(); }, Cancel: function () { $(this).dialog("close"); } } }); return false; }