c# - 如何将 ASP.NET MVC 上的搜索结果打印成 pdf?
问题描述
我是 ASP.NET MVC 的新手,我正在尝试将两个日期之间的过滤记录打印到 PDF。我正在使用 ROTATIVA 生成 PDF,问题是 PDF 生成正确,但包含所有记录,而不仅仅是两个日期的记录过滤器结果。
控制器代码:
//this method is for put the list of the records on the view
public ActionResult SaleList()
{
using (inventoryEntitiesDBA dc = new inventoryEntitiesDBA())
{
return View(dc.sales.ToList());
}
}
//this method is to filter the records between start and end date
[HttpPost]
public ActionResult SaleList(DateTime start, DateTime end)
{
bool Status = false;
if(ModelStatus.IsValid())
{
using(inventoryEntitiesDBA dc = new inventoryEntitiesDBA())
{
var d = dc.sales.Where(x => x.sale_day >= start && x.sale_day <= end).ToList();
Status = true;
ViewBag.Status = Status;
return View(d);
}
}
}
//this method is to generate the PDF
public ActionResult SalesToPdf()
{
var report = new ActionAsPdf("SaleList");
return report;
}
我不知道该怎么做,任何建议表示赞赏。
*更新---> view
:
@if (ViewBag.Status != null && Convert.ToBoolean(ViewBag.Status))
{
//this is for print if the method for filter
//the dates are called
<p align="right">
@Html.ActionLink("Generate PDF", "SalesToPdf2")
</p>
}
else
{
//this is for print if the method for filter the dates are not called
<p align="right">
@Html.ActionLink("Generate PDF", "SalesToPdf")
</p>
}
<center>
@using (Html.BeginForm("SaleList", "Sales", FormMethod.Post))
{
<span>Start Date </span> <input type="date" name="start" />
<span> End Date </span><input type="date" name="end" />
<input type="submit" value="Filter" />
}
</center>
解决方案
您正在调用SalesToPdf
不带参数的操作,这意味着它将始终与未过滤的列表匹配。您可以将参数传递到重载中,如此处ActionAsPdf
的文档中所示
在您的情况下,这可能需要对过滤列表进行某种单独的操作,如下所示:
[HttpPost]
public ActionResult SalesToPdf(DateTime startDate, DateTime endDate)
{
var report = new ActionAsPdf("SaleList", new {start=startDate, end=endDate});
return report;
}
因此,如果您有未过滤的数据,您将调用您现有的操作,而对于过滤的数据,您将调用此操作。
推荐阅读
- java - apache poi 是否与 xalan jar 有任何依赖关系?
- python - 类似于 R 的 diffr 的 python 库
- c++ - 对于 Mask RCNN 模型,较小的图像对 OpenCV 中的推理时间几乎没有影响
- javascript - e.slice 不是函数
- druid - Druid - 防止在每次 CSV 摄取时创建新分区
- scala - Spark 与 Scala:通过在每个可能对上执行函数来计算表
- laravel - Laravel Sanctum 在不创建新令牌的情况下检索 PlainTextToken
- javascript - 是否可以在没有网络访问和服务器的情况下在本地使用反应?
- python - 将集合列表转换为字典
- python - 计算没有 sklearn 的机器学习模型的准确率