【问题标题】:Pdf Generation using Rotativa in ASP.Net MVC5在 ASP.Net MVC5 中使用 Rotativa 生成 Pdf
【发布时间】:2016-10-12 11:59:42
【问题描述】:

我正在使用Rotativa 生成 PDF。以下是我生成 PDF 的函数:

public ActionResult GeneratePDF()
{
    return new ViewAsPdf("pdfView")
    {
        FileName = "Fee_Challan.pdf",
        PageOrientation = Orientation.Landscape,
        PageSize = Size.A4,
        PageMargins = { Left = 10, Right = 10, Top = 15, Bottom = 22 },
        MinimumFontSize = 7,
        PageHeight = 40
    };
}

我从Create 方法调用这个函数。当我在return RedirectToAction("GeneratePDF"); 中调用它时,它工作正常。

但是当我在return 语句之前调用它时,它不起作用。

GeneratePDF(); //this does not work. But I want to use this approach.
return RedirectToAction("index","Applicants");

我想在生成 PDF 后加载另一个视图,这就是为什么我不想在 RedirectToAction() 中调用 GeneratePDF()。调试器显示该方法正在正常执行。告诉我为什么它不起作用。

【问题讨论】:

  • 任何正文回复?
  • 不清楚你想用 PDF 做什么。也许将 PDF 发送给用户并同时重定向到另一个页面?
  • @GiorgioBozio 是的。当用户单击按钮时,我想生成 PDF,然后将其发送给用户下载并重定向到另一个页面,这样用户就不会一次又一次地单击 生成 PDF 按钮。
  • 它与pdf过程无关。只需使用一些 javascript 来管理用户导航。
  • 但是为什么调用 GeneratePDF() 只在 RedirectToAction() 函数中起作用.. 并且将其作为单独的语句调用不起作用?

标签: asp.net asp.net-mvc-5 pdf-generation rotativa


【解决方案1】:

不起作用,因为在您的情况下,GeneratePDF() 方法确实将视图返回为 pdf。那么你在用它做什么呢?答案是:没什么!

GeneratePDF(); //this returns an ActionResult which contains your pdf, but you do nothing with it here
return RedirectToAction("index","Applicants"); // this redirects the user to another action

所以在这种情况下,您只能将用户重定向到另一个操作或返回 pdf。在同一个方法中不能有两个 return 语句。

为了使用户无法再次生成相同的 pdf(这应该是无害的,那么如果用户再次想要 pdf 会是什么问题?但您希望您的应用程序如何工作是您的选择)您将不得不使用 javascript 禁用(隐藏甚至重定向到另一个页面等)。

希望这涵盖了所有内容。干杯!

【讨论】:

  • 感谢您的回答(尽管为时已晚)我重定向到另一个带有成功消息和 GENERATE pdf 按钮的视图...它解决了我的问题,即使在生成 pdf 后表单字段也可见...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 2016-02-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多