C#Rotativa ActionAsPDF没有传递参数

时间:2015-11-29 16:28:25

标签: c# asp.net rotativa

我尝试使用Rotativa库(1.6.4)使用ActionAsPdf发送参数,遗憾的是,函数被调用但其中的参数List<T_Trainee> trainee= new List<T_Trainee>(); foreach (int f in foo) { T_Trainee t = new T_Trainee(); t.email = (string)Session["Mail"]; t.phone = (string)Session["Phone"]; trainee.Add(t); } //code to get the PDF ActionAsPdf pdf = new ActionAsPdf("Index", trainee) { FileName = "Bulletin.pdf" }; 始终为null。 这是我的代码:

//function that return the PDF
public ActionResult Index(List<T_Trainee> trainee)
{
    ViewModelFoo vmc = new ViewModelFoo();
    vmc.trainee = trainee;
    return View(vmc);
}

Trainee var是一个对象列表T_Trainee not null - &gt;在debug中看到:

x:Phase

当在调试模式下调用该函数时,我可以清楚地看到参数&#34;实习生&#34;是空的,但我仍然不明白为什么。

任何人都可以帮助我吗?谢谢!

2 个答案:

答案 0 :(得分:1)

在最新版本的Rotativa中,ActionAsPdf似乎是一个已弃用的函数。

我通过ViewAsPdf更改了它,现在它可以工作了。这两个函数之间的区别在于您必须使用ViewAsPdf直接在Index方法调用中发送视图模型。

这是我的代码,我希望它会帮助某人:

调用索引并发送viewModel的代码

ViewModelFoo vmc = new ViewModelFoo();
List<T_Trainee> trainees= new List<T_Trainee>();
foreach (int f in foo)
{
    T_Trainee t = new T_Trainee();
    t.email = (string)Session["Mail"];
    t.phone = (string)Session["Phone"];
    trainees.Add(t);
}
vmc.trainees = trainees;
//code to get the PDF     
ViewAsPdf pdf = new ViewAsPdf("Index", vmc)
{
   FileName = "File.pdf",
   PageSize = Rotativa.Options.Size.A4,
   PageMargins = { Left = 0, Right = 0 }
};

生成视图的索引

public ActionResult Index()
{
    return View(vmc);
}

答案 1 :(得分:0)

foo是否已填充?

尝试示例代码......

列出受训者=新名单(); trainee.Add(new T_Trainee {email =“sample@email.com”,phone =“555-1212”});

这有用吗?

您还可以尝试将Action绑定到模型

公共ActionResult索引(ViewModelFoo vmc)