为 IEnumerable<> 列表创建会话并在控制器方法中重用该会话

create session for IEnumerable<> list and reuse that session in controller methods

我得到 IEnumerable<object> 列表到 Create_Brochure 控制器方法如下

所以我想保留这个对象列表并在Create_Brochure_PDF控制器方法中重用

所以我在 create session 中添加了以下几行 在 Create_Brochure 控制器方法中

IEnumerable<ProductsPropertiesVM> newmodel = model;

Session["TemplateData"] = newmodel;

为了在 Create_Brochure_PDF 控制器方法中使用该会话,我将以下行添加到 Create_Brochure_PDF 控制器方法

IEnumerable<ProductsPropertiesVM> newmodel = Session["TemplateData"] as IEnumerable<ProductsPropertiesVM>;

但我在 Create_Brochure_PDF 控制器方法

中得到这个新模型的 null

我需要知道如何为 IEnumerable<object> 列表定义一个 Session 并在另一个方法中正确地重用它。

这样试试:

IEnumerable<ProductsPropertiesVM> newmodel =(IEnumerable<ProductsPropertiesVM>)Session["TemplateData"];

因为 如果您使用 as 语法进行强制转换无效,则表达式会生成 null。

[Reference#1] [Reference#2]

我觉得你的定义没有问题,

PrintIndex()Create_Brochure_PDF() 方法中添加以下行并为 Create_Brochure_PDF() 控制器方法和 PrintIndex() 添加调试点并找出它的空位置

IEnumerable<ProductsPropertiesVM> newmodel = Session["TemplateData"] as IEnumerable<ProductsPropertiesVM>;