在 asp.net mvc 中使用 Rotativa 打印页面

print page using Rotativa in asp.net mvc

我在 asp.net mvc 的应用程序中使用 Rotativa 打印页面。

它运行良好,但我的问题是我想打印过滤器数据。

例如,我有位置表和教师,所以当单击位置 A 时,位置 A 的所有教师都会显示,我在每个位置内放置 link 以供打印。

这是我的控制器:

  public ActionResult IndexById(int? id)
    {
        var teachersD = db.TeacherDetails.AsQueryable().Include(s => s.Position);
        if (id != null) teachersD = teachersD.Where(c => c.PositionId == id);
        ViewBag.result = teachersD;
        return View(teachersD.ToList());
    }


    public ActionResult Print(int id)
    {
        var report = new ActionAsPdf("IndexById", new { PositionId = id });
        return report;
    }

和这个视图:

 <td>
        @Html.ActionLink("Teacher", "Index", "TeacherDetails", new { id = item.Id }, null)
    </td>

    <td>
    <td>
        @Html.ActionLink("Print ", "Print", new { id = item.Id })

    </td>        

您正在传递一个名为 PositionId:

的值
new ActionAsPdf("IndexById", new { PositionId = id })

但该操作需要一个名为 id:

的值
public ActionResult IndexById(int? id)

框架的 model/value 绑定是基于名称的,因此它们需要匹配。由于请求中缺少 id,因此该值最终为 null。 (如果它是 int 而不是 int?,您将收到有关缺少必需值的错误。)

只需将值传递为 id:

new ActionAsPdf("IndexById", new { id = id })