2011-07-11 14 views
5

En ASP.NET MVC, hay un método útil Request.IsAjaxRequest que puedo usar para determinar si la solicitud se realiza a través de AJAX. Sin embargo, el método RenderAction parece llamar al controlador/acción a través de AJAX también.¿Cómo puedo distinguir entre las solicitudes realizadas desde RenderAction y mediante AJAX?

Me gustaría las llamadas a través de RenderAction para devolver un View, mientras que las llamadas a través de AJAX para devolver un objeto Json. ¿Hay alguna forma en que pueda distinguir las llamadas de esas dos fuentes?

EDIT: Re. Jim: Yo simplemente llamar a un RenderAction dentro de un View:

En SomeView.ascx:

Html.RenderAction("Action", "AnotherController", new { id = "some ID" }); 
+0

william, me permito diferir en su declaración de RenderAction. la misma prueba aplica [Request.IsAjaxRequest()] en renderaction. ciertamente no se invoca a través de ajax por defecto. deberías verificar el código para asegurarte de que no tienes ningún jquery que invoque la repetición 'debajo de las cobijas'. –

+0

@jim, mira la actualización ... –

Respuesta

5

Creo que podría utilizar ControllerContext.IsChildAction para determinar si un método fue llamado por RenderAction().

+0

Funciona como un amuleto :) ¡Gracias! –

Cuestiones relacionadas