Existe-t-il un moyen de spécifier plusieurs identifiants de cible de mise à jour avec Ajax.ActionLink afin que je puisse restituer un ensemble de vues partielles lors du rappel?
Le problème que je vois est qu’Ajax.ActionLink ne fournit qu’un seul ID cible à mettre à jour, mais ce dont j’ai besoin, c’est de mettre à jour plusieurs régions de la page avec des données différentes après un appel ajax.
Toute aide sur ce serait génial! Merci!
Vous pouvez vérifier ce lien: http://devlicio.us/blogs/sergio_pereira/archive/2009/08/23/asp-net-mvc-with-jquery-superload.aspx
J’ai eu le même problème et ça m’aide à le résoudre
Non, il n’y en a pas. Vous pouvez cependant écrire du code qui le fait vous-même. Vous auriez besoin de:
Exemple:
$.ajax({ type: "POST", url: "/action/controller", success: function(data) { var key; for (key in data) { $("#" + key).html(data[key]); } } });
Cela suppose que l’action que vous appelez renverra un object dont les noms de propriété sont les ID des éléments à mettre à jour et les valeurs de propriété sont les fragments HTML en tant que chaînes.
Je sais que cette question est ancienne, mais si vous utilisez la même solution que celle indiquée par @Gregoire (http://devlicio.us/blogs/sergio_pereira/archive/2009/08/23/asp-net-mvc-with-jquery-superload .aspx) pour le côté serveur, vous pouvez passer plusieurs identifiants dans AjaxOptions
@Ajax.ActionLink("Link", "Action", new AjaxOptions { UpdateTargetId = "id1, #id2" })
le framework MVC appenda automatiquement le “#” à id1
dans ce cas. Vous devrez ensuite modifier la fonction jquery.unobtrusive-ajax.js
autour de la ligne 45 pour ressembler à ceci:
mode = (element.getAtsortingbute("data-ajax-mode") || "").toUpperCase(); $(element.getAtsortingbute("data-ajax-update")).each(function (i, update) { var top, html = $("#" + update.id, data).html(); switch (mode) { case "BEFORE": top = update.firstChild; $("").html(html).contents().each(function () { update.insertBefore(this, top); }); break; case "AFTER": $("").html(html).contents().each(function () { update.appendChild(this); }); break; default: $(update).html(html); break; } });
Le code Javascript utilise simplement le même identifiant que celui qui a été transmis pour récupérer uniquement ce contenu et remplacer le même identifiant par ce même contenu. Cela fonctionne également pour Ajax.BeginForm (). Avoir un sens?