在ASP.NET MVC中使用Rotativa打印页面

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

它工作正常,但我的问题是我想打印过滤器数据。

例如,我有“职位表”和“教师”,因此当单击“职位A”时,将显示“职位A”的所有教师,并在每个职位内放置打印链接。

这是我的控制器:

  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>        
zjs0555 回答:在ASP.NET MVC中使用Rotativa打印页面

您正在传递一个名为PositionId的值:

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

但是该操作期望一个名为id的值:

public ActionResult IndexById(int? id)

框架的模型/值绑定基于名称,因此它们需要匹配。由于请求中缺少id,因此该值最终为null。 (如果它是int而不是int?,则会出现有关缺少所需值的错误。)

只需将值传递为id

new ActionAsPdf("IndexById",new { id = id })
本文链接:https://www.f2er.com/3144884.html

大家都在问