2009-05-06 8 views
1

Salut à tous. Ok, voici la situation. Je voudrais être en mesure de charger une série de vues partielles similaires sur une page parente; beaucoup de la même manière que cela est fait dans this article (simulant des panneaux AJAX).Façon correcte de charger les vues partielles ASP.NET MVC avec AJAX?

Dans l'article, il semble fonctionner correctement, car il appelle la méthode d'action correspondante de manière asynchrone sur le contrôleur. Mais la méthode qu'il utilise ressemble au mieux à un hack et ne semble pas très élégante. Un bref aperçu de ce qui se passe est:

Ce serait un widget indépendant qui se charge de manière asynchrone.

<% using (Ajax.Form("ReportOne", null, 
     new AjaxOptions { UpdateTargetId = "resultOne" }, 
     new { id="reportFormOne" })) { } %> 

<script type="text/javascript"> 
    $get("reportFormOne").onsubmit(); 
</script> 

La sortie correspondante serait de la forme:

<form action="/Home/ReportOne/reportFormOne" onsubmit="Sys.Mvc.AsyncForm.handleSubmit(this, { insertionMode: 0, updateTargetId: 'resultDiv' }); return false;"> 

    <!-- Your form elements here... --> 

</form> 

Comme je l'avais dit plus haut, cela ne semble pas comme une façon vraiment élégante d'aller sur la réalisation, mais j'ai essayé de trouver une alternative pour cela (en utilisant jQuery ou d'autres moyens), et ont échoué à le faire. Solution jQuery: charge le html de l'action une fois le chargement de la page terminé.

Répondre

2

<script type='text/javascript'> 
$(function() { 
    $.load('<%= Url.Action("ReportOne", "Home", new { id = "reportFormOne" }) %>', null, function(response,status,xhr) { 
     $('#partialView').html(reponse); 
    }); 
}); 
</script> 

... 

<div id='partialView'> 
</div> 
+0

Merci. Cela fonctionnerait bien; Cependant, si j'ai besoin d'ajouter plusieurs vues partielles avec des données similaires, est-il sensé d'utiliser jQuery pour obtenir les ID de chacun des widgets de la DB que j'ai besoin de charger et de boucler ensuite chaque appel de l'action? Cela semble s'appuyer sur jQuery beaucoup. – blparker

+0

Vous pouvez générer tout cela dans ViewData (ou votre modèle), puis générer dynamiquement le code jQuery pour obtenir uniquement les éléments spécifiques dont vous avez besoin. Cela simplifierait le code côté client requis. – tvanfosson

Questions connexes