Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот) / 5 сообщений из 5, страница 1 из 1
12.06.2015, 17:02
    #38983019
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот)
Пользователь вызывает [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
12.06.2015, 17:13
    #38983029
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот)
Pallaris,
На один request может приходиться только один response. Поэтому оба ваших желания несовместимы. Поэтому рекомендуется для вывода файла делать на отдельной странице, которая уже не обновится с новой вьюхой.
...
Рейтинг: 0 / 0
12.06.2015, 17:19
    #38983031
Pallaris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот)
AxeleronПоэтому рекомендуется для вывода файла делать на отдельной странице

Что-то не очень понял, можно разъяснить?
...
Рейтинг: 0 / 0
12.06.2015, 17:59
    #38983053
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот)
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
18.06.2015, 10:06
    #38986544
bazaea
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот)
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
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET MVC Вернуть ViewResult после FileContentResult (или наоборот) / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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