【发布时间】:2020-10-16 11:09:16
【问题描述】:
我尝试使用https://stackoverflow.com/a/54043063/234954 的解决方案将页面呈现为字符串(这样我可以将其转换为 PDF),但这只会让我获得主视图,它不会获得与相关联的布局页面(因此缺少样式表和一些页眉/页脚)。
如何将整个页面呈现为字符串,而不仅仅是部分视图?
【问题讨论】:
我尝试使用https://stackoverflow.com/a/54043063/234954 的解决方案将页面呈现为字符串(这样我可以将其转换为 PDF),但这只会让我获得主视图,它不会获得与相关联的布局页面(因此缺少样式表和一些页眉/页脚)。
如何将整个页面呈现为字符串,而不仅仅是部分视图?
【问题讨论】:
我在最近的一个项目中使用这篇文章代码来渲染 html 以供 PDF 生成。
我在 Views 文件夹中使用了模板,而不是剃须刀页面。
它适用于模板中的布局和部分。
https://ppolyzos.com/2016/09/09/asp-net-core-render-view-to-string/
【讨论】:
我发现我可以通过对我正在查看的答案进行两项更改来获得我想要的(整个页面):
var view = new RazorView(_razorViewEngine,
_activator,
new List<IRazorPage>(),
page,
HtmlEncoder.Default,
new DiagnosticListener("ViewRenderService"));
改为:
var view = new RazorView(_razorViewEngine,
_activator,
pageModel.PageContext.ViewStartFactories.Select(v => v()).ToList(),
page,
HtmlEncoder.Default,
new DiagnosticListener("ViewRenderService"));
和
await page.ExecuteAsync();
到
await view.RenderAsync(viewContext);
请注意,如果 viewstart 页面不包含在视图中,则渲染视图会产生与执行页面相同的结果。
【讨论】: