2011-09-14 16 views
13

Tengo una acción que podría ser llamada a través de un enlace normal, en cuyo caso devolvería una Vista(), o también podría llamarse a través de AJAX o RenderAction (es decir, como una Acción infantil) en cuyo caso yo ' d devuelve un PartialView().¿Cómo puedo saber si RenderAction llama a mi acción?

La clasificación de la pieza AJAX es fácil, pero ¿cómo puedo probar si mi acción se está procesando como una Acción infantil?

Idealmente, me gustaría ser capaz de escribir código como este:

if (Request.IsAjaxRequest() || Request.IsChildAction()) 
    return PartialView(); 

return View(); 

Obviamente, el Request.IsChildAction() no existe - ¿hay algo simlilar, o hago sólo hay que crear una ¿ChildAction especial que siempre devuelve una vista parcial?

Respuesta

33

Usted estaba casi allí:

public ActionResult Foo() 
{ 
    if (Request.IsAjaxRequest() || ControllerContext.IsChildAction) 
    { 
     return PartialView(); 
    } 
    return View(); 
} 
+0

Gracias - Me estaba empezando a pensar que no había manera de saber – StanK

Cuestiones relacionadas