7
votes

Multiples identifiants de mise à jour avec Ajax.actionLink ASP.NET MVC

existe-t-il un moyen de spécifier plusieurs identifiants de la cible de mise à jour avec AJAX.ActionLinkLink afin que je puisse rendre un ensemble de vues partielles sur le rappel?

Le problème que je vois est que AJAX.ActionLink ne fournit qu'un identifiant cible pour moi de 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!


0 commentaires

3 Réponses :


4
votes

Non, il n'y a pas. Vous pouvez cependant, cependant, écrivez un code qui le fait vous-même. Vous auriez besoin de:

  1. Partition Le HTML renvoyé dans différentes "zones" que vous appliquerez dans différentes parties de la page. Vous pouvez le faire sur le contrôleur (peut-être en rendant plusieurs actions et en stockant une liste des fragments HTML renvoyés) ou en JavaScript. Li>
  2. Écrivez le code JavaScript pour prendre le HTML renvoyé, itératiez les objectifs que vous souhaitez mettre à jour et appliquer le fragment HTML approprié à chacun. Le code ressemblerait à quelque chose comme le code ci-dessous. Li>
  3. N'utilisez pas l'assistant HTML de formulaire AJAX. Au lieu de cela, rendez-vous une forme standard et soumettez-la via JavaScript. Li> ol>

    Exemple: p>

    $.ajax({
        type: "POST", 
        url: "/action/controller",
        success: function(data) {
            var key;
            for (key in data) {
                $("#" + key).html(data[key]);
            }
        }
     });
    


0 commentaires

6
votes

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 cela m'aide à résoudre


3 commentaires

J'ai utilisé cela, travaillé, avec des modifications mineures pour le faire fonctionner dans VB. Néanmoins, c'est une solution désordonnée. L'équipe MVC doit être frappée dans la tête pour nous recourir à cela, pourquoi ne peut-ils pas simplement faire un cadre qui fonctionne et fait des choses communes, fondamentales quotidiennes comme on pourrait s'attendre?


@ Erx_vb.next.coder: la solution de nettoyage consiste à utiliser le résultat JSON utilisé, vous pouvez mettre à jour n'importe quelle partie de la page que vous souhaitez utiliser JavaScript sur ce résultat.


@ ERX_VB.NEXT.CODER Je sais que c'était il y a quelque temps, mais vous devriez regarder dans Apache Wicket, si vous n'êtes pas obligé de rester avec ASP.NET Framework. Wicket utilise Java pour le code côté serveur, mais seulement une différence mineure).



1
votes

Je sais que cette question est vieille, mais si vous utilisez la même solution que @gregoire pointée vers (http://devlicio.us/blogs/sergio_pereira/Archive/2009/08/23/asp-net-mvc-phan- jquery-superloat.aspx) Pour le côté serveur, vous pouvez transmettre plusieurs identifiants dans AjaxOptions

mode = (element.getAttribute("data-ajax-mode") || "").toUpperCase();
$(element.getAttribute("data-ajax-update")).each(function (i, update) {
    var top,
        html = $("#" + update.id, data).html();

    switch (mode) {
    case "BEFORE":
        top = update.firstChild;
        $("<div />").html(html).contents().each(function () {
            update.insertBefore(this, top);
        });
        break;
    case "AFTER":
        $("<div />").html(html).contents().each(function () {
            update.appendChild(this);
        });
        break;
    default:
        $(update).html(html);
        break;
    }
});


0 commentaires