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

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

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

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

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

return View();

Очевидно, что Request.IsChild Action() не существует - есть что-то похожее или мне просто нужно создать специальное Child Action, которое всегда возвращает PartialView?

1 ответ

Решение

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

public ActionResult Foo()
{
    if (Request.IsAjaxRequest() || ControllerContext.IsChildAction)
    {
        return PartialView();
    }
    return View();
}
Другие вопросы по тегам