我从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指令的任何方法。如果我显示错误页面,我需要强制它在新窗口中打开一些方法。有没有解决这个问题的方法?
答案 0 :(得分:0)
我不相信你可以做你想做的事。只要执行“window.location.href ='somelocation'”,就会指示当前的浏览器窗口请求“somelocation”并呈现结果,无论它是什么。因此,您需要将结果中的任何错误信息输出到该请求。
现在,没有理由需要重定向到错误页面。您可以返回包含错误消息或任何其他类型结果的ViewResult。