J'ai une liste de "trucs" dans une table, et j'ai un lien Détails dans chaque ligne qui va charger les détails de l'élément dans une rangée cachée sous chaque ligne visible, cliquez à nouveau sur le lien pour masquer les détails de l'élément. L'affichage/masquage se fait avec jQuery simpleAnnuler MVC Ajax.Actionlink basé sur une condition
Actuellement le lien de détails est un Ajax.Actionlink()
qui appelle l'action désignée.
Tout fonctionne correctement, sauf quand je veux cacher les détails, il appelle à nouveau l'action, qui appelle la logique, qui appelle la base de données.
Évidemment, c'est une perte de ressources, donc je voudrais un moyen d'annuler la requête ajax quand une condition est remplie; la condition étant que le conteneur "details" est visible.
@Ajax.ActionLink("Details", "DetailsPartial",
new AjaxOptions {
OnBegin = "function(){
checkLoaded('" + string.Format("DetailContainer{0}", item.Id) + "');
}",
HttpMethod = "GET",
UpdateTargetId = string.Format("Detail{0}", item.Id),
OnSuccess = "function(){
showElement('" + string.Format("DetailContainer{0}", item.Id) + "');
}",
InsertionMode = InsertionMode.Replace
})
Je pense que je devrais faire le travail avec OnBegin, mais je n'ai pas encore trouver la commande magique qui annule l'appel ajax.
Avec la fonction checkLoaded()
je vérifie .css('display') == 'none'
pour l'ID d'élément passé, et donc j'aurais besoin d'une annulation là-dedans.
J'ai cherché une solution pendant un certain temps, mais je n'en ai pas trouvé un, peut-être parce que je ne sais pas comment le demander intelligemment. L'aide est appréciée.
vous m'avez donné une nouvelle perspective, merci – romeozor
ne semble pas fonctionner. J'appelle une boîte de dialogue de confirmation et retourne le résultat. Même si l'utilisateur choisit Annuler et false est renvoyé, les actions passent toujours par :( – Alex