Я использую здесь ответ (https://stackoverflow.com/a/2759898), чтобы отобразить как строку.Render Посмотреть как строку (Async)
Я новичок в асинхронном ожидании. Просто нужно знать, будет ли следующий код фактически освобождать ресурсы до отображения представления? Просто предположим, что мой взгляд займет 5 секунд.
public async Task<string> RenderViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
return await Task.Run(() =>
{
var razor = new RazorViewEngine();
var viewResult = razor.FindView(ControllerContext, viewName, null, false);
var viewContext = new ViewContext(ControllerContext, viewResult.View,
ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
});
}
}
P.S. Не спрашивайте меня, почему мои взгляды потребуют времени для рендеринга. Хотя это не рекомендуется, но для этого конкретного экземпляра мне нужно вызвать несколько веб-сервисов в представлении и создать json-выход.
Я знаю его плохую практику, но мне отчаянно нужно это делать как временный взлом в нашем текущем проекте в срочном порядке. Мы скоро это исправим. – user3219798