会话在控制器方法中变为空

session become null in controller method

我有以下控制器,在那个控制器中我创建了会话来保存 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 查看页面有 href link 以调用同一 class 文件中的 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);
    }

但是在上面的方法中我得到的是 null IEnumerable<ProductsPropertiesVM> newmodel

编辑:

如果我解释整个场景

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

前段时间我遇到了同样的问题,所以我在 Rotativa 库

中想出了解决方案 ViewasPdf() 方法

您可以在单击该 href 后直接调用 link,但是您必须为此方法创建一个视图,您将生成 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() 方法中的以下行

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

  1. 现在调用Create_Brochure_PDF()方法如下 Create_Brochure 查看页面

<a href="@Url.Action("Create_Brochure_PDF", "Brochure")">Download ViewAsPdf</a>