79 votes

Action du contrôleur de vue partielle MVC asp.net

Je suis très novice dans le développement d'applications web et je pensais commencer par la technologie récente. J'essaie donc d'apprendre à la fois asp.net et le framework MVC. C'est probablement une question très simple pour vous, professionnels de MVC.

Ma question est la suivante: une vue partielle doit-elle avoir une action associée et, dans l'affirmative, cette action est-elle appelée chaque fois qu'une page normale utilise RenderPartial() sur la vue partielle?

138voto

tvanfosson Points 268301

Alors que vous pouvez avoir une action qui renvoie une vue partielle, vous n'avez pas besoin d'une action de rendre une vue partielle. RenderPartial prend la vue partielle et le rend, en utilisant le modèle et la vue de données si elle est fournie, dans le courant (parent).

Vous voulez peut être une action qui renvoie une vue partielle si vous êtes en utilisant AJAX pour charger/recharger une partie d'une page. Dans ce cas, le retour de la pleine vue n'est pas souhaitée, puisque vous ne voulez recharger une partie de la page. Dans ce cas, vous pouvez avoir l'action juste retour de la vue partielle qui correspond à la section de la page.

Mécanisme Standard

Faisant usage de la vue partielle dans l'affichage normal (aucune action n'est nécessaire)

...some html...
<% Html.RenderPartial( "Partial", Model.PartialModel ); %>
...more html..

Ajax mécanisme

Le rechargement d'une partie d'une page via AJAX (note partielle est rendu inline dans le chargement initial de la page)

...some html...
<div id="partial">
<% Html.RenderPartial( "Partial", Model.PartialModel ); %>
</div>
...more html...

<script type="text/javascript">
   $(function() {
       $('#someButton').click( function() {
           $.ajax({
              url: '/controller/action',
              data: ...some data for action...,
              dataType: 'html',
              success: function(data) {
                 $('#partial').html(data);
              },
              ...
           });
       });
   });
</script>

Contrôleur pour l'AJAX

public ActionResult Action(...)
{
     var model = ...

     ...

     if (Request.IsAjaxRequest())
     {
          return PartialView( "Partial", model.PartialModel );
     }
     else
     {
          return View( model );
     }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X