2011-09-15 14 views
13

Ho controllato this question e ha risolto i miei problemi iniziali. Ma non voglio che la vista parziale venga visualizzata solo quando l'utente fa clic su un link, voglio renderizzare viste parziali quando la pagina viene caricata e, possibilmente, mostrare un indicatore di avanzamento mentre viene caricata la vista parziale.Rendering visualizzazioni parziali utilizzando ajax

Come raggiungerlo?

Grazie mille per aver letto questo.

risposta

43

Se si desidera caricare la pagina e quindi caricare la vista parziale tramite la tecnologia AJAX è possibile creare un ActionMethod che fa qualcosa di simile:

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

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

e quindi nella tua pagina fai qualche Cose del genere:

$(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); 
      } 
    }); 
}); 
7

È possibile renderlo nella pagina iniziale scrivendo @Html.Partial(...).

+0

Think @ Html.Parital non può essere utilizzato in Ajax, jquery. – Shan

+0

@Shan: è una cosa lato server; non ha niente a che fare con quello. – SLaks

+0

@SLaks, sembra che abbia bisogno delle viste parziali da visualizzare dopo che è stata visualizzata la vista principale (probabilmente per evitare l'elaborazione iniziale a lungo termine). Per quanto ne so @ Html.Partial() che proponi viene elaborato sul server insieme alla vista principale. Quindi non risolve il problema dell'uomo. Inizialmente sono stato ingannato anche dalla domanda. – cnom

8

controller

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

sulla pagina predefinita (utilizzando il funzionamento jquery ajax)

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

Devo inserire il formato file della 'Vista parziale'? Come .cshtml –

Problemi correlati