2010-12-21 23 views
6

Ho una pagina che contiene alcuni comandi utente. Vorrei caricare questi usercontrols dopo il postback come un rendering Ajax.Rendering parziale dopo caricamento pagina

Ogni usercontrols visualizzare un elenco dal database e io non voglio che l'utente attendi che il codice del server costruisce la risposta penso che sarà utile se la pagina viene visualizzata per l'utente e dopo i controlli utente sono caricati tramite una richiesta ajax .

Esiste una soluzione in ASP.NET MVC? Esiste una soluzione per questo problema?

grazie anticipo: l.

risposta

5

Basta utilizzare jQuery per legare il codice HTML restituito dal metodo di azione (che dovrebbe restituire un risultato vista parziale - ad esempio, l'uscita del controllo utente/parziale):

Controller:

[HttpGet] 
public PartialViewResult GetSomeData() 
{ 
    var data = somewhere.GetSomething(); 
    return PartialView(data); // partial view should be typed to data. 
} 

jQuery:

$(document).ready(function() { 
    $.get('/home/getsomedata/', function(data) { 
     $('#target').html(data); 
    }); 
}); 
+2

Si potrebbe anche usare ** $ ('# target'). Load ('/ home/getsomedata /') ** –

+0

Sì, è possibile. – RPM1984

+0

Puoi caricare anche i dati di PartialView usando il codice Razor? –

3

faccio di solito in questo modo:

Nella marcatura mi riserva spazio per il controllo utente da caricare come

<div id="i-tabs-5"> 
    <div style="text-align:right;margin-bottom:6px;">...</div> 
    <div id="issueNoteListPlaceholder"></div> 
</div> 

poi DOM pronto faccio una chiamata ajax che restituisce un risultato parziale e sostituire il contenuto del segnaposto

$(document).ready(function() { 
    loadIssueNotes(); 
}); 

function loadIssueNotes() { 
    $.ajax({ 
     type: "get", 
     dataType: "html", 
     url: '<%: Url.Content("~/Controller/Action") %>', 
     data: {}, 
     success: function (response) { 
      $("#issueNoteListPlaceholder").html('').html(response); 
     } 
    }); 
} 
+0

hehe, le grandi menti pensano allo stesso modo. :) FYI '$ .get' fa il lavoro nella maggior parte dei casi, a meno che non sia richiesto un controllo più preciso. – RPM1984

+0

hehe :) assolutamente a destra su $ .get'! – Lorenzo

Problemi correlati