在ASP.NET MVC中使用JQuery将数据导出为PDF

时间:2017-12-01 23:52:24

标签: jquery asp.net-mvc-4 razor itext

我正在关注C# corner文章,将数据从控制器操作绑定到HTML表格,然后将数据从HTML表格导出到 iTextSharp pdf 。下面我将控制器操作方法数据绑定到html表。

@model List<ExportDataAsPDFAppl.Controllers.Employees>  
@using (Html.BeginForm("exportPDF", "Home", FormMethod.Post))  
{  
    <div>  
        <input type="hidden" name="gridHTML" />  
        <input type="submit" id="btnExportHTML" name="btnExportHTML" class="btn btn-success" value="Export Pdf" />  
    </div>  
    <div id="tblEmpData">  
        <table class="table table-striped table-condensed">  
            <thead>  
                <tr>  
                    <th>ID</th>  
                    <th>FirstName</th>  
                    <th>LastName</th>  
                    <th>Gender</th>  
                    <th>Salary</th>  
                </tr>  
            </thead>  
            <tbody>  
                @foreach (var item in Model)  
                {  
                    <tr>  
                        <td>@item.ID</td>  
                        <td>@item.FirstName</td>  
                        <td>@item.LastName</td>  
                        <td>@item.Gender</td>  
                        <td>@item.Salary</td>  
                    </tr>  
                }  
            </tbody>  
        </table>  
    </div>  
}

btnExportHTML jQuery点击功能中,隐藏变量gridHTML与HTML表绑定。

<script type="text/javascript">  
    $(document).ready(function () {  
        $('#btnExportHTML').click(function () {  
            debugger;  
            $("input[name='gridHTML']").val($("#tblEmpData").html());  
        });  
    });  
</script>
  

但是在导出'btnExportHTML'时,会出现HTTP 404错误。

以下是按钮btnExportHTML点击的操作方法。

[HttpPost]  
[ValidateInput(false)]  
private FileResult exportPDF(string gridHTML)  
{  
    StringReader reader = null;  
    Document pdfDoc = null;  
    PdfWriter write = null;  
    try  
    {  
        using (MemoryStream memorystream = new MemoryStream())  
        {  
            reader = new StringReader(gridHTML);  
            pdfDoc = new Document(PageSize.A4, 5f, 5f, 5f, 5f);  
            write = PdfWriter.GetInstance(pdfDoc, memorystream);  
            pdfDoc.Open();  
            XMLWorkerHelper.GetInstance().ParseXHtml(write, pdfDoc, reader);  
            pdfDoc.Close();  
            return File(memorystream.ToArray(), "application/pdf", Convert.ToString(DateTime.Now + ".pdf"));  
        }  

    }  
    finally  
    {  
        reader.Dispose();  
        pdfDoc.Dispose();  
        write.Dispose();  
    }  
}

请让我知道我的错误来解决这个问题。

0 个答案:

没有答案