Mentre è possibile eseguire un'azione che restituisce una vista parziale, non è necessario eseguire un'azione per il rendering di una vista parziale. RenderPartial acquisisce la vista parziale e la esegue, utilizzando il modello specificato e visualizza i dati, se forniti, nella vista corrente (principale).
Si potrebbe desiderare un'azione che restituisce una vista parziale se si utilizza AJAX per caricare/ricaricare parte di una pagina. In tal caso, non è necessario restituire la vista completa poiché si desidera ricaricare solo una parte della pagina. In questo caso puoi fare in modo che l'azione restituisca solo la vista parziale corrispondente a quella sezione della pagina.
meccanismo standard
Facendo uso di vista parziale in una vista normale (nessuna azione necessaria)
...some html...
<% Html.RenderPartial("Partial", Model.PartialModel); %>
...more html..
Ajax meccanismo
ricaricamento parte di una pagina mediante AJAX (nota parziale viene reso in linea nel caricamento iniziale della pagina)
...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>
Controller per AJAX
public ActionResult Action(...)
{
var model = ...
...
if (Request.IsAjaxRequest())
{
return PartialView("Partial", model.PartialModel);
}
else
{
return View(model);
}
}
vedo, sto solo giocando con il modello VS per un app MVC. Sto cercando di visualizzare più elenchi di client, ad esempio, in una vista parziale. Al momento ho una classe di modello di trasferimento di dati, come potrei inviare questo modello per la vista parziale senza coinvolgere la visualizzazione della pagina che rende questa visione parziale? Grazie per il tuo aiuto! – yogibear
Il partial è sempre incluso nella vista principale. L'unica volta in cui restituiresti il partial da solo sarebbe se tu eseguissi l'aggiornamento tramite AJAX. Presumibilmente useresti un partial per visualizzare ** un ** elenco di client. Si potrebbe, forse, utilizzare un ciclo foreach in immagine per scorrere i liste (contenuti nel modello di vista), passando ciascuno alla parziale come modello. – tvanfosson
+1 Molto bene! Bella risposta. –