需要比我更聪明的人的建议。我有一个模态,有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内容,我不能同时做这两件事(重定向到不同的页面并下载)。 有什么建议,我一直在网上搜索很长时间。 它本质上是下载和重定向,但下载只需要在某些条件下发生(按收音机),页面应始终重定向。
答案 0 :(得分:0)
您可以将其分为两个步骤。
首先提交您在javascript中进行检查以查看用户是否要下载PDF。如果他愿意,则调用下载操作,然后从JS调用main方法。
或者您可以先渲染customerIndex页面并传递一个标志(类似于downloadPDFForId)。根据CustomerIndex中JS中的这个标志,您可以下载该文件。
第一种方法是更清洁。