c# - from - Redireccionando a MVC ActionResult desde FileResult
mvc actionresult download file (1)
Esto podría ser simple pero aquí va:
Estoy implementando un informe descargable de Excel en mi aplicación MVC3. He usado este método en el pasado y ha funcionado perfectamente; sin embargo, en este caso, existe la posibilidad de que no existan datos de ventas para el informe. Aquí está mi código:
Tengo una acción FileResult dentro de un controlador de 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 el flujo de informes puede ser nulo, lo que significa que no hay información de ventas disponible, en cuyo caso preferiría redirigir a una Vista que muestra un mensaje para indicar que no hay información de ventas disponible, sin embargo, no estoy seguro de cómo lograrlo esta.
¿Hay alguna forma de hacer esto?
Bueno, FileResult
hereda de ActionResult
:
Si el resultado puede ser un RedirectToRouteResult
(heredado de ActionResult
) o un FileResult
, entonces ... su acción debe ser de tipo ActionResult
, que puede administrar ambos.
algo como eso :
[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"
};
}