Как заставить ASP.NET MVC открыть новое окно? - PullRequest
0 голосов
/ 16 августа 2011

Я пытаюсь собрать приложение MVC, которое не является типичным, создает запись и представляет ее пользователю.

Я нахожу некоторые вещи, которые не являются дружественными в MVC, как в веб-формах. В моем представлении есть два раскрывающихся списка, текстовое поле и кнопка отправки. В одном из выпадающих списков я должен предварительно заполнить его кодами и описанием. Эта часть сделана.

Далее у меня есть пользователь, который вводит текст в текстовое поле. Они нажимают на кнопку «Найти». Find заполняет 2-й выпадающий список. Без viewstate код немного другой, но возможный. Далее пользователь нажимает на кнопку отправки. Здесь самая сложная часть. Мне нужно ввести данные из представления для создания PDF-файла, а затем открыть новое окно браузера или вкладку для отображения PDF.

Я также хочу удалить PDF с сервера перед его представлением. Я могу удалить PDF, прежде чем представить его в веб-формах. Я обнаружил, что Actionlink может открыть новое окно, но Actionlink не передает ввод в представлении в контроллер. Стандартная кнопка отправки формы делает, но кнопка отправки не открывает новое окно. Контроллер также не может открыть представление в новом окне.

Как получить пользовательский ввод и передать его на контроллер, а затем отобразить PDF, созданный в новом окне браузера? Кроме того, мне нужно удалить PDF с сервера.

Ответы [ 2 ]

1 голос
/ 24 февраля 2014

Простое создание действия, которое возвращает ваш поток PDF в виде FileResult

Если вы генерируете свой pdf в поток памяти: (я рекомендую это):

public ActionResult DownloadPdf() 
{ 
    // you need some code here to generate the pdf to the memory stream.

    return File(stream, "application/pdf", "DownloadName.pdf");
}

Или, если хотите, используйте путь к файлу напрямую:

public ActionResult DownloadPdf() 
{ 
    // get pdf filepath
    var path = "Chap0101.pdf";

    return File(path, "application/pdf");
}

Затем в своем HTML-коде вы можете использовать что-то вроде этого, чтобы открыть в новом окне.

@Html.ActionLink("Download pdf in new window", "DownloadPdf", "ControllerName", null, new { target = "_blank" })
0 голосов
/ 16 августа 2011

Вы можете вернуть представление с использованием некоторого JavaScript, который сначала открывает новое окно, а затем обновляет другое представление. Если javascript не активен, представление не будет перезагружено, и там будет ссылка для открытия вручную. Если вы создаете PDF в памяти, вам не нужно ничего удалять, просто отправьте PDF-файл в памяти клиенту. Я новичок в MVC, это просто идея.

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