【问题标题】:How to render full RazorPage to string?如何将完整的 RazorPage 渲染为字符串?
【发布时间】:2020-10-16 11:09:16
【问题描述】:

我尝试使用https://stackoverflow.com/a/54043063/234954 的解决方案将页面呈现为字符串(这样我可以将其转换为 PDF),但这只会让我获得主视图,它不会获得与相关联的布局页面(因此缺少样式表和一些页眉/页脚)。

如何将整个页面呈现为字符串,而不仅仅是部分视图?

【问题讨论】:

    标签: asp.net-core razor-pages


    【解决方案1】:

    我在最近的一个项目中使用这篇文章代码来渲染 html 以供 PDF 生成。

    我在 Views 文件夹中使用了模板,而不是剃须刀页面。

    它适用于模板中的布局和部分。

    https://ppolyzos.com/2016/09/09/asp-net-core-render-view-to-string/

    【讨论】:

    • 这与我所做的主要区别在于它找到并使用视图而不是页面。事实证明这正是我需要改变的地方。
    【解决方案2】:

    我发现我可以通过对我正在查看的答案进行两项更改来获得我想要的(整个页面):

    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 页面不包含在视图中,则渲染视图会产生与执行页面相同的结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-20
      • 2014-01-10
      • 1970-01-01
      • 2017-09-11
      • 2013-07-07
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      相关资源
      最近更新 更多