Можно ли вызвать async/await действия в @Html.Action()

379
08 декабря 2016, 22:44

Добрый день, господа! Есть необходимость вызвать дочерний action метод через @Html.Action() (речь идет об ASP.NET MVC). Можно ли так сделать? Код метода примерно следующий:

public async Task<ActionResult> Index()
{
    var products = await 
    _productsService.GetAll(CancellationToken.None);
      return PartialView(departments.ToList());
}
Answer 1

Есть мнение, что это приведёт к проблемам. Ещё тут подробный ответ. Объяснения все, как водится, на английском.

Краткая суть, насколько я её понимаю, в том, что асинхронным может быть только корневое действие, дочерние делать асинхронными нельзя.

Однако, как заметил @andreycha есть некий ASP.NET vNext (сейчас это называется ASP.NET Core) в котором асинхронность поддерживается более целостно при помощи View Components, которые полностью заменяют child action.

Выглядит это очень просто:

public async Task<IViewComponentResult> InvokeAsync()
{
    var profileLinks = await _profileLinkManager.GetAllAsync();            
    return View(profileLinks);
}

Более полное описание с примерами есть тут.

READ ALSO
Матрица (двумерный массив) в C# Windows Forms

Матрица (двумерный массив) в C# Windows Forms

Подскажите, пожалуйста, какой компонент в виде таблицы можно использовать в C# Windows Forms для ввода/вывода матрицы? (Что-то вроде StringGrid'а в Delphi)

617
Отправить почту, чтобы &ldquo;От кого&rdquo; стоял произвольный email

Отправить почту, чтобы “От кого” стоял произвольный email

Есть обратная связь, пользователь должен заполнить обязательное поле EmailПри нажатии на кнопку отправить, письмо отправляется на support@домен

284
Как внедрить файлы в ресурсы программы

Как внедрить файлы в ресурсы программы

Внедрил три текстовых файла в проектДумал они все время будут в проекте, однако они ссылаются на файлы в папке debug, что не есть хорошо, так...

231