13

I have an action that could potentially be called via a normal link, in which case I'd return a View(), or it could also be called via AJAX or RenderAction (ie as a Child Action) in which case I'd return a PartialView().

Sorting out the AJAX part is easy - but how can I test if my action is being rendered as a Child Action?

Ideally, I'd like to be able to write code like this:

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

return View();

Obviously the Request.IsChildAction() does not exist - is there something simlilar, or do I just need to create a special ChildAction that always returns a PartialView?

StanK
  • 4,750
  • 2
  • 22
  • 46

1 Answers1

33

You were almost there:

public ActionResult Foo()
{
    if (Request.IsAjaxRequest() || ControllerContext.IsChildAction)
    {
        return PartialView();
    }
    return View();
}
Darin Dimitrov
  • 1,023,142
  • 271
  • 3,287
  • 2,928