C# 从FileResult重定向到MVC ActionResult

C# 从FileResult重定向到MVC ActionResult,c#,asp.net-mvc,fileresult,C#,Asp.net Mvc,Fileresult,这可能是一个简单的问题,但下面是: 我正在MVC3应用程序中实现一个excel可下载报告。我过去使用过这种方法,它工作得很好,但是在这种情况下,报告中可能不存在销售数据。这是我的密码: 我在报表控制器中有一个FileResult操作: [HttpPost] public FileResult ExcelReportDownload(ReportExcelDownloadRequest reportRequest) { ReportEngine re = n

这可能是一个简单的问题,但下面是:

我正在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"
        };
    }
我的问题是,有时报告流可能为空,这意味着没有可用的销售信息,在这种情况下,我宁愿重定向到一个视图,该视图显示一条消息,表示没有可用的销售信息,但我不确定如何实现这一点


有办法做到这一点吗?

那么,
FileResult
继承自
ActionResult

如果结果可以是
重定向路由结果
(继承自
操作结果
)或
文件结果
,则。。。您的操作类型必须为
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"
           };
    }
[HttpPost]
公共操作结果ExcelReportDownload(ReportExcelDownloadRequest reportRequest)
{
ReportEngine re=新的ReportEngine();
Stream report=re.GetReport(reportRequest);
如果(报告==null)
返回重定向到操作();
其他的
返回新文件streamresult(报告,“应用程序/ms excel”)
{
FileDownloadName=“SalesReport.xls”
};
}