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.
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);
}
});
});
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>
Vous pouvez le rendre dans la page initiale en écrivant @Html.Partial(...)
.