여기에서 대답 (https://stackoverflow.com/a/2759898)을 사용하여 뷰를 문자열로 렌더링합니다.뷰를 문자열로 렌더링 (비동기)
비동기를 처음 사용합니다. 보기가 렌더링 될 때까지 다음 코드가 실제로 자원을 릴리스하는지 여부를 알아야합니다. 내보기를 렌더링하는 데 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. 왜 내 견해가 렌더링하는 데 시간이 걸릴지 내게 묻지 마라. 권장되는 방법은 아니지만 특정 인스턴스에 대해서는 뷰에서 소수의 웹 서비스를 호출하고 json 출력을 만들어야합니다.
나는 그 나쁜 습관을 알고 있지만 절박한 문제로 우리 프로젝트의 일시적인 해킹으로이 방법을 절실히 필요로합니다. 우리는 곧 그것을 고칠 예정입니다. – user3219798