1

我正在使用 Rotativa 将 Razor 视图转换为 PDF。

PDF 文件未下载。

我可以在 Fiddler 中看到它,但浏览器没有提示下载 - 我在 IE 和 Chrome 上都试过了。

我还尝试使用此问题中的解决方案将文件下载到物理路径。但这也不起作用,因为系统无法访问该文件夹(拒绝访问)。

这是我的代码:

public ActionResult Index()
{
    var model = new CustomerDashboardVM();
    return View("Index", model);
}

public ActionResult print(int voucherID)
{
    var pdf =  new ActionAsPdf("Index", new { voucherID}) { FileName = "testInvoice.pdf", PageSize = Rotativa.Options.Size.A4};

  //  RotativaHelper.SaveHttpResponseAsFile("http://localhost:65425/BlankDashboard",  Server.MapPath("~\\PdfDownloads"));

    return pdf;

}

我想知道为什么会发生这种情况——我单击按钮,它调用 print ActionResult 方法——没有错误消息(我将它包装在 try 和 catch 块中)。我在同事的电脑上试过了,还是一样的问题!

非常感谢。

4

2 回答 2

1

问题是我ActionResult print()通过 Ajax 帖子在按钮单击事件上调用该方法。这显然行不通。

如果您将按钮替换为链接,它应该可以工作,该链接在其 URL 中有 print() 方法;即,只是 mvc 链接的工作方式..

于 2014-04-23T14:48:11.097 回答
1

好吧,我明白你的错误了。您尚未在 Index 方法中传递参数名称凭证 ID 。

所以现在你的代码看起来像这样:

public ActionResult Index(int voucherID)  // Here you have to pass parameter
{
    var model = new CustomerDashboardVM(voucherID);
    return View("Index", model);
}

Print()方法看起来像这样 -

public ActionResult Print(int voucherID)
{
  return new ActionAsPdf(
                 "Index", 
                 new { voucherID = voucherID }) 
                 { 
                    FileName = "testInvoice.pdf",
                    PageSize = Rotativa.Options.Size.A4
                 };
}
于 2014-04-23T15:16:39.233 回答