【问题标题】:redirect and download pdf on click of radio button单击单选按钮重定向并下载 pdf
【发布时间】:2016-11-10 08:21:16
【问题描述】:

需要比我更聪明的人的建议。我有一个模式,它有 2 个东西,本质上是 3 个单选按钮(电子邮件、PDF、无)和一个是和否提交按钮。 在按下单选按钮时,我会适当地标记隐藏变量,以了解用户是否在我的控制器中按下了电子邮件或 pdf。用户按下 Yes 进行保存(快乐路径),它将调用控制器。 此控制器将保存更改并重定向到不同的页面。现在我想添加到这个控制器并让它下载一个 pdf。我通过调用我的 DownloadPDF 操作来做到这一点。

public ActionResult Main(string id)
//code for doing all the save and other stuff
{
if (viewModel.Email)
{
    SendTestingEmail(viewModel.ConsumerEncryptedID);
}
else if(viewModel.PDF)
{
    DownloadWelcomePDF()
}
return RedirectToAction("ConsumerIndex", "Consumer")

}

    public ActionResult DownloadWelcomePDF(string id)
{
    var htmlWelcomeEmail = db.getHtmlBody(id.DecryptID());
    var converter = new ConvertToPDF();
    var file = converter.ConvertHTMLStringToPDF(htmlWelcomeEmail.EmailBody);
    var fileStreamResult = new FileStreamResult(file, "application/pdf") { FileDownloadName = string.Format("Welcome{0}{1}_{2}.pdf", htmlWelcomeEmail.ConsumerFirstName, htmlWelcomeEmail.ConsumerLastName, DateTime.Now.ToString("yyyyMMdd")) };
    return fileStreamResult;
}

现在因为这也会返回 pdf 内容,所以我不能同时做这两件事(重定向到不同的页面和下载)。 有什么建议吗,我在网上找了很久。 它本质上是下载和重定向,但下载只需要在特定条件下(按收音机)发生,并且页面应该始终重定向。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 c#-4.0


    【解决方案1】:

    您可以将其分为两个步骤。

    首先在提交时检查 javascript 以查看用户是否想要下载 PDF。如果他愿意,那就调用下载动作,然后从JS调用main方法。

    或者您可以先呈现 customerIndex 页面并传递一个标志(类似于 downloadPDFForId)。根据 CustomerIndex 中 JS 中的这个标志,您可以下载该文件。

    第一种方法会更干净。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      • 1970-01-01
      相关资源
      最近更新 更多