Как узнать, вызывается ли RenderAction мое действие?

У меня есть действие, которое потенциально может быть вызвано по обычной ссылке, и в этом случае я бы вернул View(), или его также можно было бы вызвать через AJAX или RenderAction (т.е. как дочернее действие), и в этом случае я бы вернул Частичный вид().

Разобраться с частью AJAX легко, но как я могу проверить, отображается ли мое действие как дочернее действие?

В идеале я хотел бы иметь возможность писать такой код:

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

return View();

Очевидно, что Request.IsChildAction() не существует - есть ли что-то подобное, или мне просто нужно создать специальный ChildAction, который всегда возвращает PartialView?


person StanK    schedule 14.09.2011    source источник


Ответы (1)


Вы были почти там:

public ActionResult Foo()
{
    if (Request.IsAjaxRequest() || ControllerContext.IsChildAction)
    {
        return PartialView();
    }
    return View();
}
person Darin Dimitrov    schedule 14.09.2011
comment
Спасибо - я уже начал думать, что нет способа сказать - person StanK; 15.09.2011