web-dev-qa-db-fra.com

Rendu de vues partielles à l'aide d'ajax

J'ai vérifié cette question et cela a résolu mes problèmes initiaux. Mais je ne veux pas que la vue partielle soit rendue uniquement lorsque l'utilisateur clique sur un lien, je veux rendre les vues partielles lorsque la page est chargée et, éventuellement, afficher un indicateur de progression pendant le chargement de la vue partielle.

Comment y parvenir?

Merci beaucoup d'avoir lu ceci.

20
programad

Si vous voulez charger la page puis charger la vue partielle via ajax, vous pouvez créer un ActionMethod qui fait quelque chose comme:

public ActionResult Create()
{
     var model = new MyModel();

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

puis dans votre page, faites quelque chose comme:

$(function(){

    $(document).ajaxStart(function () {
        //show a progress modal of your choosing
        showProgressModal('loading');
    });
    $(document).ajaxStop(function () {
        //hide it
        hideProgressModal();
    });

    $.ajax({
          url: '/controller/create',
          dataType: 'html',
          success: function(data) {
             $('#myPartialContainer').html(data);
          }
    });
});
63
ericb

Manette

public ActionResult GetModule(string partialName){
    return PartialView("~/Views/Shared/"+partialName);
}

sur la page par défaut (à l'aide de l'opération jquery ajax)

<div id='mod1'>Loading...</div>
<script type="text/javascript">
            $("#mod1").load("/ControllerName/GetModule?partialName=test1");         
</script>
10
ebattulga

Vous pouvez le rendre dans la page initiale en écrivant @Html.Partial(...).

7
SLaks