ASP.Net MVC ItextSharp: файл PDF не загружается при вызове действия с помощью jquery - PullRequest
0 голосов
/ 10 сентября 2018

Когда я нажимаю кнопку, всплывающее окно начальной загрузки появляется там, где существует кнопка для загрузки данных в формате PDF.когда кнопка нажата во всплывающем окне начальной загрузки, то ниже кода запускается и вызывается действие на стороне сервера.

$(".bol_save_as_pdf").click(function () {
    $.ajax({
    type: "GET",
    url: '@Url.Action("GeneratePDF", "TestModal")',
    success: function (data) {
        alert(data.Msg);
        },
        error: function (xhr, status, error) {
        //$("#dataDiv").html("Result: " + status + " " + error + " " + xhr.status + " " + xhr.statusText)
        }
    });
    return false;
});

Действие на стороне сервера выполняется правильно, но диалог загрузки pdf не появляется, но когда я вызываю то же действие, вставляя URL-адрес браузера, затем загрузка pdfна стороне клиента.

см. мой код действия на стороне сервера

[Route("DownloadPDF")]
[HttpGet]
public void DownloadPDF()
{
    //bool IsPdfGenerated = false;

    List<Student> studentsVM = new List<Student>
    {
        new Student {ID=1,FirstName="Joy",      LastName="Roy",     FavouriteGames="Hocky"},
        new Student {ID=2,FirstName="Raja",     LastName="Basu",    FavouriteGames="Cricket"},
        new Student {ID=3,FirstName="Ajay",   LastName="Das",FavouriteGames="Foot Ball"},
        new Student {ID=4,FirstName="Debu", LastName="Saha",    FavouriteGames="Tennis"},
        new Student {ID=5,FirstName="Sanjeeb",  LastName="Das",     FavouriteGames="Hocky"},
    };

    var viewToString = StringUtilities.RenderViewToString(ControllerContext, "~/Views/Shared/_Report.cshtml", studentsVM, true);
    string filepath = HttpContext.Server.MapPath("~/PDFArchives/") + "mypdf.pdf";

    MemoryStream workStream = new MemoryStream();
    StringReader sr = new StringReader(viewToString);
    Document pdfDoc = new Document(PageSize.A4, 10f, 10f, 30f, 0f);
    PdfWriter writer = PdfWriter.GetInstance(pdfDoc, System.Web.HttpContext.Current.Response.OutputStream);
    //writer.CloseStream = false;
    pdfDoc.Open();
    XMLWorkerHelper.GetInstance().ParseXHtml(writer, pdfDoc, sr);
    pdfDoc.Close();

    System.Web.HttpContext.Current.Response.ContentType = "pdf/application";
    System.Web.HttpContext.Current.Response.AddHeader("content-disposition", "attachment;" +
            "filename=sample.pdf");
    System.Web.HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
    System.Web.HttpContext.Current.Response.Write(pdfDoc);
    System.Web.HttpContext.Current.Response.End();
}

что не так в моем подходе?

Не загружено окно загрузки pdf, потому что я использую всплывающее окно начальной загрузки?ищу гида.Thaks

Ответы [ 2 ]

0 голосов
/ 10 сентября 2018

Удалите ajax и замените вашу кнопку на - @ Url.Action («DownloadPDF», «Home»)

0 голосов
/ 10 сентября 2018

Эта проблема исправлена. в тот момент, когда я изменил код js, он начал работать. просто мне нужно использовать window.location = '@Url.Action("DownloadPDF", "TestModal")';

$("#btndownload").click(function () {
    window.location = '@Url.Action("DownloadPDF", "TestModal")';
    return false;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...