Return 如果成功则为 FileStreamResult,如果不成功则为 View

Return a FileStreamResult if successful or View if unsuccessful

在 MVC 中,如果我的查询成功,是否有办法 return 一个 FileStreamResult,但如果不成功,只是 return ViewBag 中有错误的视图。像这样....

    public FileStreamResult Submit()
    {
        string retVal;
        try
        {
            DataSet ds = new DataSet();

            ds = getDS();
            if (ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)
            {
                ExcelXmlWorkbook book = ExcelXmlWorkbook.DataSetToWorkbook(ds);
                string fileName = "results.xml";
                book.Export(fileName, ExportFormat.Xml, 0);
                FileInfo info = new FileInfo(fileName);
                return File(info.OpenRead(), "application/x-msexcel");
            }
            else
            {
                retVal = "No Data";
            }

        }
        catch (Exception ex)
        {
            retVal = ex.Message;
        }

        ViewBag.Result = retVal;

        return View("ViewName");
    }

我知道这行不通,但基本上,如果数据拉取成功,我想打开一个结果文件...如果不成功,我想显示该页面,或重定向到另一个页面向用户显示结果失败。也欢迎任何关于更好方法的建议。谢谢!

ViewResult(由 View 方法 return 编辑的类型)和 FileStreamResult 都派生自 ActionResult class , 它代表一个动作方法的结果,所以你必须 return 它的实例来自 Submit.

public ActionResult Submit()