Comment faire du panneau de mise à jour dans ASP.NET MVC

Comment puis-je créer un panneau de mise à jour dans le framework ASP.NET Model-View-Contoller (MVC) ?

Vous pouvez utiliser une vue partielle dans ASP.NET MVC pour obtenir un comportement similaire. La vue partielle peut toujours générer le code HTML sur le serveur, et il vous suffit de twigr le code HTML au bon emplacement (en fait, les assistants MVC Ajax peuvent configurer cela pour vous si vous souhaitez inclure les bibliothèques MSFT Ajax).

Dans la vue principale, vous pouvez utiliser le formulaire Ajax.Begin pour configurer la requête asynchrone.

<% using (Ajax.BeginForm("Index", "Movie", new AjaxOptions { OnFailure="searchFailed", HttpMethod="GET", UpdateTargetId="movieTable", })) { %>   <% } %> 
<% Html.RenderPartial("_MovieTable", Model); %>

Une vue partielle encapsule la section de la page que vous souhaitez mettre à jour.

 <%@ Control Language="C#" Inherits="ViewUserControl>" %>  <% foreach (var item in Model) { %>  <% } %> 
Title ReleaseDate
<%= Html.Encode(item.Title) %> <%= Html.Encode(item.ReleaseDate.Year) %>

Ensuite, configurez l’action de votre contrôleur pour gérer les deux cas. Un résultat de vue partiel fonctionne bien avec la demande d’asych.

 public ActionResult Index(ssortingng query) { var movies = ... if (Request.IsAjaxRequest()) { return PartialView("_MovieTable", movies); } return View("Index", movies); } 

J’espère que cela pourra aider.

Fondamentalement, les contrôles serveur “traditionnels” (y compris les contrôles ASP.NET AJAX) ne fonctionneront pas immédiatement avec MVC … le cycle de vie de la page est très différent. Avec MVC, votre stream HTML est rendu beaucoup plus directement que la boîte abstraite / pseudo-dynamic dans laquelle WebForms vous encapsule.

Pour “simuler” un UpdatePanel dans MVC, vous pouvez envisager de remplir un

utilisant jQuery pour obtenir un résultat similaire. Un exemple très simple, en lecture seule, se trouve sur cette page de recherche

Le HTML est simple:

   

Les données du panneau sont au format JSON . MVC peut le faire automatiquement. Voir NerdDinner SearchController.cs

  public ActionResult SearchByLocation(float latitude, float longitude) { // code removed for clarity ... return Json(jsonDinners.ToList()); } 

et le jQuery / javascript est aussi

    

Bien sûr, UpdatePanel peut être utilisé dans des scénarios beaucoup plus complexes (il peut contenir des INPUTS, prend en charge ViewState et se déclenche sur différents panneaux et autres contrôles). Si vous avez besoin de ce type de complexité dans votre application MVC, je crains que vous ne soyez prêt pour un développement personnalisé …

Si vous êtes nouveau sur asp.mvc, je vous recommande de télécharger l’exemple d’application NerdDinner ( source ). Vous y trouverez suffisamment d’informations pour commencer à travailler efficacement avec mvc. Ils ont aussi des exemples ajax. Vous découvrirez que vous n’avez pas besoin de mettre à jour le panneau.