2011-09-15 24 views
13

He comprobado this question y resolvió mis problemas iniciales. Pero no quiero que la vista parcial se represente solo cuando el usuario hace clic en un enlace, quiero mostrar vistas parciales cuando la página está cargada y, posiblemente, mostrar un indicador de progreso mientras se carga la vista parcial.Representación de vistas parciales usando ajax

¿Cómo lograr eso?

Muchas gracias por leer esto.

Respuesta

43

Si desea cargar la página y luego cargar la vista parcial a través de AJAX puede crear una ActionMethod que hace algo como:

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

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

y luego en su página hacer un poco es como:

$(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

Puede representarlo en la página inicial escribiendo @Html.Partial(...).

+0

Think @ Html.Parital no se puede utilizar en Ajax, jquery. – Shan

+0

@Shan: es algo del lado del servidor; No tiene nada que ver con eso. – SLaks

+0

@SLaks, parece que necesita las vistas parciales para mostrarse después de que se muestre la vista principal (probablemente para evitar un procesamiento inicial prolongado). Por lo que sé, @ Html.Partial() que usted propone se procesa en el servidor junto con la vista principal. Por lo tanto, no resuelve el problema del hombre. La pregunta también me engañó inicialmente. – cnom

8

controlador

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

en la página predeterminada (usando la operación jQuery Ajax)

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

¿Debo poner el formato de archivo de la "Vista parcial"? Como .cshtml –

Cuestiones relacionadas