2016-07-07 21 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中的這個標誌,你可以下載文件。

第一種方法是更清潔的方法。