2012-07-11 20 views
15

Esto podría ser un simple pero aquí va:a redirigir a MVC ActionResult de FileResult

estoy poniendo en práctica un informe descargable de Excel en mi solicitud MVC3. He utilizado este método en el pasado y funcionó a la perfección, sin embargo, en este caso, existe la posibilidad de que los datos de ventas no existan para el informe. Aquí está mi código:

tengo una acción FileResult dentro de un controlador Informes:

[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" 
     }; 
    } 

Mi problema es que a veces la corriente de informe puede ser significado nula de que no hay información de ventas disponible, en cuyo caso lo haría más bien redirigir a una Vista que muestra un mensaje para decir que no hay información de ventas disponible, sin embargo, no estoy seguro de cómo lograr esto.

¿Hay alguna manera de hacerlo?

Respuesta

26

Bueno, FileResult hereda de ActionResult:

Si resultado puede ser o bien un RedirectToRouteResult (heredando de ActionResult) o una FileResult, entonces ... su acción debe ser de tipo ActionResult, que puede manejar ambos.

algo así:

[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" 
      }; 
    } 
Cuestiones relacionadas