2016-07-07 24 views
0

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

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内容我不能同时做这两两件事情(重定向到不同的页面和下载)。 有没有什么建议,我一直在搜索互联网很长一段时间。 它本质上是下载和重定向,但只有在某些情况下(收音机按下)才需要下载,并且页面始终应该重定向。

回答

0

你可以分成两步。

首先提交您在javascript中检查以查看用户是否要下载PDF。如果他想,然后调用下载动作,然后从JS调用主要方法。

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

第一种方法是更清洁的方法。