ASP.NET MVC как вернуть ошибку из действия загрузки файла, не покидая текущей страницы? - PullRequest
1 голос
/ 12 июля 2010

Я вызываю действие загрузки файла из 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, но на самом деле это невозможно, так как я не знаю способа вернуть инструкцию javacript в вызове контроллера без ajaxed. Если я отображаю страницу ошибки, мне нужно как-то заставить ее открыться в новом окне. Есть ли возможное решение этой проблемы?

1 Ответ

0 голосов
/ 12 июля 2010

Я не верю, что можно делать то, что ты хочешь. Как только вы делаете «window.location.href = 'somelocation'», вы указываете текущему окну браузера запрашивать «somelocation» и отображать результат, каким бы он ни был. Поэтому вам необходимо вывести любую информацию об ошибке в результате этого запроса.

Теперь нет причин, по которым вам нужно было бы перенаправлять на страницу с ошибкой. Вы можете вернуть ViewResult, содержащий сообщение об ошибке или любой другой вид результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...