Asp.net mvc 在asp.net mvc中使用Rotativa打印页面
我正在asp.net mvc中使用Rotativa打印应用程序中的页面 这是工作得很好,但我的问题是我想打印过滤数据 例如,我有位置表和教师,所以当单击位置A时,显示位置A的所有教师,并在每个位置内放置打印链接 这是我的控制器:Asp.net mvc 在asp.net mvc中使用Rotativa打印页面,asp.net-mvc,rotativa,Asp.net Mvc,Rotativa,我正在asp.net mvc中使用Rotativa打印应用程序中的页面 这是工作得很好,但我的问题是我想打印过滤数据 例如,我有位置表和教师,所以当单击位置A时,显示位置A的所有教师,并在每个位置内放置打印链接 这是我的控制器: public ActionResult IndexById(int? id) { var teachersD = db.TeacherDetails.AsQueryable().Include(s => s.Position);
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>
@ActionLink(“教师”、“索引”、“教师详细信息”,新的{id=item.id},null)
@ActionLink(“打印”、“打印”,新的{id=item.id})
您正在传递一个名为PositionId
的值:
new ActionAsPdf("IndexById", new { PositionId = id })
但该操作需要一个名为id
的值:
public ActionResult IndexById(int? id)
new ActionAsPdf("IndexById", new { id = id })
框架的模型/值绑定基于名称,因此它们需要匹配。由于请求中缺少id
,因此该值最终为null
。(如果它是int
而不是int?
则会出现一个关于缺少所需值的错误。)
只需将值作为id
传递即可:
public ActionResult IndexById(int? id)
new ActionAsPdf("IndexById", new { id = id })
传入字典的模型项的类型为“System.Collections.Generic.List
1[Abu Bilal.Models.TeacherDetails]”,但此字典需要类型为“System.Collections.Generic.IEnumerable
1[Abu Bilal.Models.Position]的模型项“@programmer:听起来你的indexbyd
action/view在这个PDF功能的上下文之外,目前无法按预期工作。您正在将列表
传递给视图,但错误表明视图需要IEnumerable
?(或者PDF库没有按您期望的方式使用?)IndexById的视图是什么?@programmer:顺便说一句,为什么您要将模型存储在ViewBag
中,并直接将模型发送到视图?前者根本不需要。我现在能做什么?@programmer:indexbyd视图中的@model
声明是什么?是否有打印视图?如果是,它的@model
声明是什么?该PDF库的供应商是否提供了一个示例来演示您正在尝试做什么?这个例子是什么?