powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот)
5 сообщений из 5, страница 1 из 1
ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот)
    #38983019
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пользователь вызывает [HttpPost]-экшн у контроллера, куда заходит объект модели параметров поиска, указанных пользователем во вьюхе. По параметрам фильтруются данные. Если помимо всего прочего пользователь выбрал галочку ReportPDF, то я формирую pdf-файл, и возвращаю его:
Код: c#
1.
2.
3.
4.
5.
6.
7.
public ActionResult Rests(SearchRests searchParams)
{
            ......
            if (searchParams.ReportPDF)
                    return File(ReportBuilder.RestsReport(...), "application/pdf", "report.pdf");
            
}   



А как бы так извернуться, чтоб после этого и вьюху какую-то нарисовать? Или до этого....
...
Рейтинг: 0 / 0
ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот)
    #38983029
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris,
На один request может приходиться только один response. Поэтому оба ваших желания несовместимы. Поэтому рекомендуется для вывода файла делать на отдельной странице, которая уже не обновится с новой вьюхой.
...
Рейтинг: 0 / 0
ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот)
    #38983031
Pallaris
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronПоэтому рекомендуется для вывода файла делать на отдельной странице

Что-то не очень понял, можно разъяснить?
...
Рейтинг: 0 / 0
ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот)
    #38983053
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris,

Хотя, попробуй. Я не запускал, но накидал приблизительно как может выглядеть.

Controller:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public ActionResult Rests(SearchRests searchParams)
{
    if (searchParams.ReportPDF)
    {
        ViewBag.FileName = "{FileName}";
    }
    return View();
}

public ActionResult Download(string id) {

    return File(ReportBuilder.RestsReport(...), "application/pdf", "report.pdf");
}



View:
Код: javascript
1.
2.
3.
4.
5.
<script type="text/javascript">

    window.location.href = "/Home/Download/" + "@Ajax.JavaScriptStringEncode(@ViewBag.FileName)";

</script>
...
Рейтинг: 0 / 0
ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот)
    #38986544
bazaea
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pallaris,

В контроллере меняешь на:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
public ActionResult Rests(SearchRests searchParams)
{
            ......
            if (searchParams.ReportPDF)
{
                    ViewData["_GetFile"] = new object();
                    return View("вьюху_какую_то_нарисовать"); //
}

}  



Во вью

Код: html
1.
2.
3.
4.
@if (ViewData["_GetFile"] != null)
{
<!-- тут форма которая сабмититься при загрузке страницы на GetFile -->
}



В контроллере дописываешь, добавляешь актион который отдает файл.

Код: c#
1.
2.
3.
4.
public ActionResult GetFile(SearchRests searchParams)
{
    return File(ReportBuilder.RestsReport(...), "application/pdf", "report.pdf");
}




оптимизируешь по вкусу.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]