我正在使用Rotativa(版本1.6.3)从我的视图生成pdf。我有一个简单的局部视图(_OverallResultPrintVersion.cshtml):
@Styles.Render("~/bundles/css")
<img src="@Url.Action("DrawChart", "Vote", new {area = "Award"})"/>
在返回Rotativa PartialViewAsPdf的操作中,它会打开一个空的pdf页面,并且不会按预期调用“DrawChart”操作。 以下是我在投票控制器中实现我的操作的方法:
public ActionResult OverallResultPdf()
{
return new Rotativa.PartialViewAsPdf(
@"~\Areas\Award\Views\Shared\Widget\_OverallResultPrintVersion.cshtml");
}
public ActionResult DrawChart()
{
var model = getModel();
return PartialView("Widget/_VotesColumnChart", model);
}
将局部视图中的图像源替换为Url时,会显示图像,但这不是我想要实现的。 知道为什么Rotativa PartialViewAsPdf无法从局部视图调用我的动作吗?
PS:这些操作没有授权限制,因此在创建PartialViewAsPdf时我不需要启动FormsAuthenticationCookieName属性。
答案 0 :(得分:1)
这是解决此问题的解决方法。添加新动作需要花费! (OverallResultPrintVersion)和在OverallResultPdf操作中,不需要返回PartialViewAsPdf,而是需要返回一个ActionAsPdf。
public ActionResult OverallResultPdf()
{
return new Rotativa.ActionAsPdf("OverallResultPrintVersion");
}
public ActionResult OverallResultPrintVersion()
{
return PartialView("Widget/_OverallResultPrintVersion");
}
和DrawChart()动作保持不变。