Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 无法下载MVC4中带有Rotativa的PDF文件_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Rotativa - Fatal编程技术网

Asp.net 无法下载MVC4中带有Rotativa的PDF文件

Asp.net 无法下载MVC4中带有Rotativa的PDF文件,asp.net,asp.net-mvc,asp.net-mvc-4,rotativa,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Rotativa,我正在使用Rotativa将Razor视图转换为PDF PDF文件未下载 我可以在Fiddler中看到它,但是浏览器没有提示下载-我已经在IE和Chrome上尝试过了 我还尝试使用中的解决方案将文件下载到物理路径,但也没有成功,因为系统无法访问文件夹(访问被拒绝) 这是我的密码: public ActionResult Index() { var model = new CustomerDashboardVM(); return View("Index", model); }

我正在使用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;

}
我想知道为什么会发生这种情况-我单击按钮,它调用PrintActionResult方法-没有错误消息(我将其包装在一个try-and-catch块中)。我曾在同事的电脑上试用过,但都是同一个问题


非常感谢。

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


如果将按钮替换为URL中包含print()方法的链接,则该功能应该可以正常工作;i、 就是mvc链接的工作方式

好吧,我理解你的错误。您尚未在索引方法中传递参数名称voucherID

现在您的代码如下所示:

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
                 };
}

您可以使用ViewAsPdf代替ActionAsPdf。因此,您的代码如下所示-return new viewspdf(“Index.cshtml”,new{voucherID}){FileName=“testInvoice.pdf”,CustomSwitches=“--print media type--header center\“text\”};。很抱歉出现格式问题。@Krishnajrana谢谢你,伙计。这不管用;它要求提供视图的viewmodel(Index.cshtml)。我真的想让它显示一个动作的结果,所以我想知道为什么这个不能与ActionAsPdf一起工作-它可以在其他项目上工作!好的,告诉我你的CustomerDashboardVM()返回什么??是否返回通用列表???我指的是这一行-var model=newcustomerdashboardvm();在索引()中method@KrishnrajRana这实际上是页面的viewModel。但问题现在解决了,如下所示。非常感谢。