2010-09-13 22 views
6

¿Es posible usar HTMl.RenderAction usando ajax para proporcionar el parámetro?Html.RenderAction usando AJAX

que tienen una acción de controlador como este

[ChildActionOnly] 
Public ActionResult EmployeeData(string id) 
{ 
    Employee employee = new Employee(); 
    //do work to get data 

    Return PartialView(employee); 
} 

La vista parcial es sólo una pequeña mesa con algunos datos de los empleados (nombre, dirección, etc.)

entonces tengo una página con un menú desplegable lista de empleados con el campo de datos que es la identificación necesaria para EmployeeData (ID de cadena)

Me gustaría utilizar ajax para que cuando se seleccione un empleado de una lista desplegable, la vista parcial de EmployeeData aparezca debajo sin actualizar la página . Entonces nuevamente si se selecciona otro empleado.

Aunque no estoy seguro de cómo hacerlo, si es posible.


Como fue recomendado aquí es lo que tengo ahora. (Por favor, no importa que este no es el ejemplo de datos del empleado que mencioné anteriormente, que los datos no están listos en la base de datos y tengo varias áreas que harán lo mismo, así que decidí trabajar en esto hoy)

aquí es mi la JS en mi opinión

$("#repList").change(function() { 
    var id = $("#repList").val(); 
    $.ajax({ 
     url: '/Reporting/GetSalesTargets/' + id, 
     success: function (result) { 

       $("#partialdiv").html(result); 
     }, 
     error: function() { 
      alert("error"); 
      } 
    }); 
}); 

me estoy haciendo a la acción del controlador que devolverá la vista, aquí está él.

public ActionResult GetSalesTargets(string id) 
{ 
    int month = DateTime.Now.Month; 
    SalesMarketingReportingService mktSrv = new SalesMarketingReportingService(); 

    SalesTargetModel model = mktSrv.GetRSMSalesTargetModel(id, month); 

    return PartialView(model); 
} 

Respuesta

16

Es posible, pero debe eliminar el atributo [ChildActionOnly]. Se convierte en una acción normal que devuelve una vista parcial que podría invocarse con AJAX:

$.ajax({ 
    url: '/home/employeedata/123', 
    success: function(result) { 
     $('#somedivid').html(result); 
    } 
}); 
+0

¿Cómo puedo mostrar el parcial en la función de éxito? – twal

+0

'$ ('# somedivid'). Html (resultado);' donde 'somedivid' es la identificación de un elemento DOM que albergará el resultado. –

+0

Oh veo, lamento haberme perdido los $ ('# somedivid'). ¡Gracias, intentaré esto! – twal

Cuestiones relacionadas