В ASP MVC, как я могу вернуть новое представление И файл пользователю? - PullRequest
4 голосов
/ 08 сентября 2010

Думаю, я бы поставил это перед толпой StackOverflow, так как у меня закончились идеи.

У меня есть запрос от пользователей, что после нажатия кнопки создается форма PDF, которую они хотели быавтоматически просматривать, и как только они закроют PDF, страница будет уже «Заключительной страницей», а не страницей, с которой они нажали кнопку.

На моей предфинальной странице с кнопкой контроллер вызывает:

return File(finalForm, "application/pdf", Server.HtmlEncode(finalForm));

Но теперь это передало управление клиенту, я не могу перенаправить на другое представление.

Есть ли какие-нибудь умные идеи о том, как я также могу отобразить новое представление?

Ответы [ 2 ]

8 голосов
/ 08 сентября 2010

Я разбил это на два отдельных действия на Home Controller, используя действие FinalPage как представление, на которое вы перенаправлены, и действие GetFile как возвращающее сам файл.

Контроллер

    public ActionResult GetFile()
    {
        return File(@"path to pdf.pdf", "application/pdf");
    }

    public ActionResult FinalPage()
    {
        return View();
    }

Просмотр

<script>

    function showfile() {
        window.open('<%= Url.Action("GetFile", "Home")%>')
    }

</script>

<%= Html.ActionLink("click", "FinalPage", "Home", null, new { onclick = "return showfile();" }) %>

Это откроет новое окно и вернет файл для отображения, но также переместит другойОкно браузера на последней странице по тому же клику.

Надеюсь, это поможет.

Редактировать

Обновлен для запуска кнопки отправки в соответствии с комментарием... в ответ на комментарий, да, вы можете сделать это с помощью кнопки отправки: -)

<script>

    function showfile() {
        window.open('<%= Url.Action("GetFile", "Home")%>')
    }

</script>

<% using(Html.BeginForm("FinalPage", "Home")) { %>

    <input type="Submit" value="click" onclick="return showfile();" />

<% } %>

Надеюсь, это поможет: -)

1 голос
/ 28 мая 2015

WestDiscGolf, для загрузки на той же странице используйте '_self':

function showfile() {
        window.open('PATH','_self')
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...