我使用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()
的原因。调试器显示该方法正在执行。告诉我为什么它不工作。
答案 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禁用(隐藏甚至重定向到另一个页面等)。
希望这涵盖所有。干杯!