繁体   English   中英

如何将在 ASP.NET MVC 上的搜索结果打印成 pdf?

[英]How to print into a pdf the results of a search on ASP.NET MVC?

我是 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;
    }

因此,如果您有未过滤的数据,您将调用现有操作,对于过滤数据,您将调用此操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM