20

这可能是一个简单的,但这里有:

我正在我的 MVC3 应用程序中实现一个 excel 可下载报告。我过去使用过这种方法并且效果很好,但是在这种情况下,报告可能不存在销售数据。这是我的代码:

我在 Reports 控制器中有一个 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"
        };
    }

我的问题是,有时报告流可能为空,这意味着没有可用的销售信息,在这种情况下,我宁愿重定向到显示消息的视图,说明没有可用的销售信息,但是我不知道如何实现这。

有没有办法做到这一点?

4

1 回答 1

32

好吧,FileResult继承自ActionResult

如果您的结果可以是 a RedirectToRouteResult(继承自ActionResult)或 a FileResult,那么...您的操作必须是 type 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"
           };
    }
于 2012-07-11T14:04:51.727 回答