Перенаправление на MVC ActionResult из FileResult
Это может быть просто, но здесь:
Я использую excel загружаемый отчет в моем приложении MVC3. Я использовал этот метод в прошлом, и он работал отлично, однако в этом случае существует вероятность того, что данные о продажах могут не существовать для отчета. Вот мой код:
У меня есть действие 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"
};
}
Моя проблема заключается в том, что иногда поток отчетов может быть нулевым, что нет никакой информации о продажах, и в этом случае я предпочел бы перенаправить на представление, которое отображает сообщение, чтобы сообщить, что информации о продажах нет, однако я не уверен как добиться этого.
Есть ли способ сделать это?
Ответы
Ответ 1
Ну, FileResult
наследует от ActionResult
:
Если результат может быть либо 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"
};
}