MVC: как опубликовать выбор пользователя и ответить PDF - PullRequest
1 голос
/ 11 февраля 2011

Это должен быть простой ответ, но, поскольку я новичок в MVC, я еще не до конца знаю свой путь: я хочу ответить пользователю, переходящему по ссылке, отправив PDF в браузер.

  • У меня есть строка идентификаторов на странице, которую нужно отправить обратно в метод, чтобы он мог генерировать запрошенное содержимое.
  • Я могу создать PDF как поток памяти, доступный для контроллера.
  • Я хочу, чтобы пользователь оставался на той же странице, на которой он щелкнул ссылку, и получил диалоговое окно "Сохранить в ...".

Если предположить, что мой контроллер называется Счет-фактура , а метод - DownloadInvoice , что я должен поставить на свое представление, чтобы отправить идентификаторы обратно (строка), и как мне ответить на это постбэк

Могу ли я просто ответить этим

return new FileStreamResult(generatedInvoice.Stream, "application/pdf");

Или мне нужно направить зрителя к другому виду, который имеет полный

Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "attachment;filename=labtest.pdf");
Response.Buffer = true;
Model.Stream.WriteTo(Response.OutputStream);
Response.End();

Ответы [ 2 ]

1 голос
/ 11 февраля 2011

Нет необходимости в другом представлении. FileStreamResult должно быть достаточно для действия контроллера (вы можете отфильтровать такое действие с атрибутом [Post]).

1 голос
/ 11 февраля 2011

Почему ты просто не попробовал?

return new FileStreamResult(generatedInvoice.Stream, "application/pdf");

Возвращение файлового потока возвращает, как говорится: файл. Это не отправляет заголовок или что-либо еще в браузер, чтобы сказать ему, чтобы загрузить другой URL.

...