session在控制器方法中变为null

时间:2015-11-05 10:23:27

标签: c# asp.net-mvc session ienumerable rotativa

我有跟随控制器,在该控制器中我创建了会话以保存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

修改

如果我解释整个场景

  1. Create_Brochure控制器方法有一个视图,
  2. 在该视图中,我有href链接将Create_Brochure视图保存为 PDF
  3. 点击该href链接后,我正在调用PrintIndex方法 该动作方法再次调用Create_Brochure_PDF方法, 所以我在Create_Brochure_PDF
  4. 中设置了空对象

1 个答案:

答案 0 :(得分:1)

我之前有过同样的问题,所以我在Rotativa库中提出了解决方案ViewasPdf()方法

您可以直接调用一旦您单击该href链接,但您必须为此方法创建一个视图,您将生成PDF格式

所以这里的步骤

  1. 为您要生成为PDF的视图创建操作

    public ActionResult Create_Brochure_PDF()
    {
    
        IEnumerable<ProductsPropertiesVM> newmodel = Session["TemplateData"] as IEnumerable<ProductsPropertiesVM>;
    
        IEnumerable<BrochureTemplateProperties> samplePDF = newmodel.Where(.... 
    
        rerurn View();
    

    }

  2. 为该Action方法生成视图

  3. 将此行rerurn View();替换为Create_Brochure_PDF()方法

  4. 中的以下行

    return new Rotativa.ViewAsPdf("Create_Brochure_PDF") { FileName = "TestActionAsPdf.pdf" };

    1. 现在调用Create_Brochure_PDF()方法,如下所示 Create_Brochure视图页面
    2. <a href="@Url.Action("Create_Brochure_PDF", "Brochure")">Download ViewAsPdf</a>