在 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 })
我在 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 })