会话在控制器方法中变为空
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
编辑:
如果我解释整个场景
Create_Brochure
控制器方法有一个视图,
- 在该视图中,我有 href link 将
Create_Brochure
视图保存为
PDF
- 单击该 href link 后,我将调用
PrintIndex
方法
该操作方法再次调用 Create_Brochure_PDF
方法,
所以我在 Create_Brochure_PDF
中设置了空对象
前段时间我遇到了同样的问题,所以我在 Rotativa 库
中想出了解决方案 ViewasPdf()
方法
您可以在单击该 href 后直接调用 link,但是您必须为此方法创建一个视图,您将生成 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>
我有以下控制器,在那个控制器中我创建了会话来保存 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
编辑:
如果我解释整个场景
Create_Brochure
控制器方法有一个视图,- 在该视图中,我有 href link 将
Create_Brochure
视图保存为PDF
- 单击该 href link 后,我将调用
PrintIndex
方法 该操作方法再次调用Create_Brochure_PDF
方法, 所以我在Create_Brochure_PDF
中设置了空对象
前段时间我遇到了同样的问题,所以我在 Rotativa 库
中想出了解决方案ViewasPdf()
方法
您可以在单击该 href 后直接调用 link,但是您必须为此方法创建一个视图,您将生成 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>