Добрый день, господа! Есть необходимость вызвать дочерний action метод через @Html.Action() (речь идет об ASP.NET MVC). Можно ли так сделать? Код метода примерно следующий:
public async Task<ActionResult> Index()
{
var products = await
_productsService.GetAll(CancellationToken.None);
return PartialView(departments.ToList());
}
Есть мнение, что это приведёт к проблемам. Ещё тут подробный ответ. Объяснения все, как водится, на английском.
Краткая суть, насколько я её понимаю, в том, что асинхронным может быть только корневое действие, дочерние делать асинхронными нельзя.
Однако, как заметил @andreycha есть некий ASP.NET vNext (сейчас это называется ASP.NET Core) в котором асинхронность поддерживается более целостно при помощи View Components, которые полностью заменяют child action.
Выглядит это очень просто:
public async Task<IViewComponentResult> InvokeAsync()
{
var profileLinks = await _profileLinkManager.GetAllAsync();
return View(profileLinks);
}
Более полное описание с примерами есть тут.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости