2010-05-18 4 views
0

Я работаю над приложением MVC, где я должен сгенерировать отчет в виде HTML-страницы. Если пользователь нажимает на значок печати, я должен показать страницу HTML пользователю. Если пользователь нажимает на значок электронной почты, я должен отправлять электронную почту с тем же вложением HTML-страницы. Я пытаюсь найти способ, которым я могу использовать один и тот же код для генерации HTML в обоих случаях электронной почты и печати. Пожалуйста, предоставьте свои предложения.reuse of mvc view

ответ

0

Ваш контроллер должен решить, что делать.

  1. Пользователь нажал печать. Действие контроллера: собирать данные, готовить представление, отображать как HTML-страницу
  2. Пользователь кликнул по электронной почте. Действие контроллера: собирать данные, готовить представление, вызывать функцию электронной почты и использовать вывод HTML-страницы в качестве вложения.
+0

но как использовать один и тот же вид? –

+0

В первом сценарии вы отправляете его в браузер; во втором сценарии вы добавляете HTML в файл или создаете вложение «на лету» из метода электронной почты, который вызывается в вашем контроллере. Если HTML одинаковый для обоих сценариев, вы можете использовать один и тот же HTML, разница в том, что вы с ним делаете. – Alec

+0

HTML такой же. Я не хочу, чтобы код генерировал HTML. Поскольку HTML обычно находится в VIEW, и я не уверен, как его захватить из представления и поставить в файл –

1

Что вы действительно хотите и не знали, как сформулировать, это визуализировать представление строки. Затем вы можете делать все, что хотите, с содержимым этой строки.

Начало здесь Render a view as a string

, но эта тема продолжается и во многих других вопросах тоже (или вы можете нагуглить), и вы откроете для себя гораздо больше информации.