2012-07-11 119 views
15

這可能是一個簡單的,但這裏有雲:重定向到MVC的ActionResult從FileResult

我執行在我MVC3應用的Excel下載的報告。過去我曾經使用過這種方法,並且工作得很好,但是在這種情況下,銷售數據可能不存在於報告中。這裏是我的代碼:

我有一個報告控制器內的FileResult動作:

[HttpPost] 
    public FileResult ExcelReportDownload(ReportExcelDownloadRequest reportRequest) 
    { 
     ReportEngine re = new ReportEngine(); 

     Stream report = re.GetReport(reportRequest); 

     return new FileStreamResult(report, "application/ms-excel") 
     { 
      FileDownloadName = "SalesReport.xls" 
     }; 
    } 

我的問題是,有時報告流可能爲空的意思,有沒有銷售信息可用,在這種情況下我也而是重定向到顯示消息的視圖,表示沒有可用的銷售信息,但我不確定如何實現此目的。

有沒有辦法做到這一點?

回答

26

那麼從ActionResultFileResult繼承:

如果導致可以是RedirectToRouteResult(從ActionResult繼承)或FileResult,然後......你的動作必須ActionResult型的,它可以同時管理。

類似的東西:

[HttpPost] 
    public ActionResult ExcelReportDownload(ReportExcelDownloadRequest reportRequest) 
    { 
     ReportEngine re = new ReportEngine(); 

     Stream report = re.GetReport(reportRequest); 
     if (report == null) 
      return RedirectToAction(<action Name>); 
     else 
      return new FileStreamResult(report, "application/ms-excel") 
      { 
       FileDownloadName = "SalesReport.xls" 
      }; 
    }