点击单选按钮重定向并下载pdf

时间:2016-07-07 21:03:46

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

需要比我更聪明的人的建议。我有一个模态,有2个东西,基本上,3个单选按钮(电子邮件,PDF,无)和一个是和否提交按钮。 按下单选按钮时,我会相应地标记隐藏变量,以了解用户是否在我的控制器中按了电子邮件或pdf。用户按下是保存(快乐路径),它将调用控制器。 此控制器将保存更改并重定向到其他页面。现在我想添加到这个控制器,并下载一个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内容,我不能同时做这两件事(重定向到不同的页面并下载)。 有什么建议,我一直在网上搜索很长时间。 它本质上是下载和重定向,但下载只需要在某些条件下发生(按收音机),页面应始终重定向。

1 个答案:

答案 0 :(得分:0)

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

首先提交您在javascript中进行检查以查看用户是否要下载PDF。如果他愿意,则调用下载操作,然后从JS调用main方法。

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

第一种方法是更清洁。