在ASP.Net MVC5中使用Rotativa生成Pdf

时间:2016-10-12 11:59:42

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

我使用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后加载另一个视图,这就是我不想在GeneratePDF()中呼叫RedirectToAction()的原因。调试器显示该方法正在执行。告诉我为什么它不工作。

1 个答案:

答案 0 :(得分:0)

无法正常工作,因为在您的情况下,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禁用(隐藏甚至重定向到另一个页面等)。

希望这涵盖所有。干杯!