如果成功则返回FileStreamResult,如果不成功则返回View

时间:2016-06-20 19:51:45

标签: c# asp.net-mvc filestreamresult

在MVC中,如果我的查询成功,有没有办法返回FileStreamResult,但如果没有,只需在ViewBag中返回带有错误的View。像这样....

    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");
    }

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

1 个答案:

答案 0 :(得分:4)

ViewResultView方法返回的类型)和FileStreamResult都来自ActionResult类,它代表了一个动作方法的结果,所以你必须从Submit返回它的实例。

public ActionResult Submit()