我有跟随控制器,在该控制器中我创建了会话以保存IENUMERABLE
数据集
[HttpPost]
[ValidateInput(false)]
public ActionResult Create_Brochure(IEnumerable<ProductsPropertiesVM> model)
{
IEnumerable<ProductsPropertiesVM> newmodel = model;
IEnumerable<BrochureTemplateProperties> sample = model.Where.....
Session["TemplateData"] = newmodel;
return View(sample);
}
修改
Create_Brchure View页面有href链接,可以在同一个类文件中调用PrintIndex
方法
<a href="@Url.Action("PrintIndex", "Brochure")">Download ViewAsPdf</a>
这是PrintIndex
方法
public ActionResult PrintIndex()
{
return new Rotativa.ActionAsPdf("Create_Brochure_PDF") { FileName = "TestActionAsPdf.pdf" };
}
我想在Create_Brochure_PDF
控制器方法中再次使用该会话列表数据集,所以我在这里创建了该方法
public ActionResult Create_Brochure_PDF()
{
IEnumerable<ProductsPropertiesVM> newmodel = Session["TemplateData"] as IEnumerable<ProductsPropertiesVM>;
IEnumerable<BrochureTemplateProperties> samplePDF = newmodel.Where(....
return View(samplePDF);
}
但是在上面的方法中我得到了空IEnumerable<ProductsPropertiesVM> newmodel
修改
如果我解释整个场景
Create_Brochure
控制器方法有一个视图,Create_Brochure
视图保存为
PDF
PrintIndex
方法
该动作方法再次调用Create_Brochure_PDF
方法,
所以我在Create_Brochure_PDF
答案 0 :(得分:1)
我之前有过同样的问题,所以我在Rotativa库中提出了解决方案ViewasPdf()
方法
您可以直接调用一旦您单击该href链接,但您必须为此方法创建一个视图,您将生成PDF格式
所以这里的步骤
为您要生成为PDF的视图创建操作
public ActionResult Create_Brochure_PDF()
{
IEnumerable<ProductsPropertiesVM> newmodel = Session["TemplateData"] as IEnumerable<ProductsPropertiesVM>;
IEnumerable<BrochureTemplateProperties> samplePDF = newmodel.Where(....
rerurn View();
}
为该Action方法生成视图
将此行rerurn View();
替换为Create_Brochure_PDF()
方法
return new Rotativa.ViewAsPdf("Create_Brochure_PDF") { FileName = "TestActionAsPdf.pdf" };
Create_Brochure_PDF()
方法,如下所示
Create_Brochure视图页面 <a href="@Url.Action("Create_Brochure_PDF", "Brochure")">Download ViewAsPdf</a>