ASP.NET MVC如何在不离开当前页面的情况下从文件下载操作返回错误?

时间:2010-07-12 14:04:28

标签: asp.net ajax asp.net-mvc-2 error-handling download

我从javascript调用文件下载操作:

$elem.click(function() { 
    window.location.href = 'MyController/MyFileDownloadAction';
});

控制器返回一个文件:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult MyFileDownloadAction()
{
    /* do some processing, generate an in-memory file... */

    return File(myFileStream, "text/plain", myFileName);
}

此操作极有可能抛出异常(或者至少无法返回文件)。

由于应用程序的性质(包含大量动态内容),在这种情况下我无法真正重定向到错误页面。当前页面需要以某种方式保持打开状态。

所以我理想地寻找类似javascript弹出窗口的东西,但是afaik这是不可能的,因为我不知道在非ajaxed控制器调用中返回javacript指令的任何方法。如果我显示错误页面,我需要强制它在新窗口中打开一些方法。有没有解决这个问题的方法?

1 个答案:

答案 0 :(得分:0)

我不相信你可以做你想做的事。只要执行“window.location.href ='somelocation'”,就会指示当前的浏览器窗口请求“somelocation”并呈现结果,无论它是什么。因此,您需要将结果中的任何错误信息输出到该请求。

现在,没有理由需要重定向到错误页面。您可以返回包含错误消息或任何其他类型结果的ViewResult。