Asp.net 无法下载MVC4中带有Rotativa的PDF文件
我正在使用Rotativa将Razor视图转换为PDF PDF文件未下载 我可以在Fiddler中看到它,但是浏览器没有提示下载-我已经在IE和Chrome上尝试过了 我还尝试使用中的解决方案将文件下载到物理路径,但也没有成功,因为系统无法访问文件夹(访问被拒绝) 这是我的密码: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); }
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。但问题现在解决了,如下所示。非常感谢。