• 49182
  • 29
  • 13
Нравится блог?
Подписывайтесь!

Кнопка "Версия для печати" в OXITE

Вполне обычная кнопка "Версия для печати". Причем, хотелось бы такую кнопку вставлять куда угодно и получать "легкую" печатную версию чего угодно в OXITE. Мне на ум пришло три варианта реализации такого функционала.

Описываю варианты в последовательности возникновения в голове.

1. IPrinted. Понятно, что интерфейс. С методом GetPrintedVersion(). Этот интерфейс должны реализовывать все модели сущностей, которые я хочу представлять в печатной версии. В частности, реализация метода GetPrintedVersion(), должна будет возвращать объект класса PrintModel, который имеет стандартный набор свойств, типа Title, Body, DateCreated, UserCreated и пр. Ну, а модель PrintModel, можно передать общему (shared) представлению (легкой .aspx странице, хотя можно применить и частичное представление .ascx).

Контроллеры моделей получат экшен-методы Print(), которые будут получать модель PrintModel и передавать её в представление.

2. Не заморачиваться объектной ориентацией и просто набросать для контроллеров моделей экшен-методы Print(T model), которые будут передавать нестандартный набор каких-то данных (для печатных версий может быть и такое), в виде списка (dictionary) в какое-то нестандартное представление (легкой .aspx странице или частичному представлению .ascx).

3. Создать контроллер печати PrintController, который будет иметь единственный экшен-метод Print(T printModel), получающий модель PrintModel и передавать её в какое-то общее (shared) представление (.aspx или .ascx). И создать компоновщик модели (model binder), в котором реализовывать по мере надобности преобразование любой модели в модель PrintModel и передавать её в контроллер PrintController для печати.

Первый способ определяет некоторые соглашения, что само по себе уже хорошо. Но существенно меняется исходный код моделей и контроллеров (роутов само собой).

Второй способ вообще прост и последователен, как обычный скрипт. Позволяет выводить различные версии печатей, для разных моделей (сущностей). И никаких соглашений, что портит всю архитектуру веб-приложения в целом. И так же, как в первом способе, нужно модифицировать модели и контроллеры.

Третий способ собирает весь механизм в один контроллер и один модел-биндер. Определяется одно соглашение для печатной модели (PrintModel). Не нужно модифицировать исходный код моделей и контроллеров (значимое преимущество). Но получится весьма громоздкий модел-биндер (в зависимости о того, сколько "версий печати" каких-либо сущностей у меня будет), к тому же жестко привязанный к роутам.

4. Контроллеры получат экшен-метод Print(T model), который будет преобразовывать модель T в модель для печати PrintModel и передавать её представлению (.aspx или .ascx). Нет привязки к роутам (к ссылкам будет достаточно прибавить секцию /print/), модели не модифицируются (они не обязаны "думать", как они должны выводиться на печать), можно использовать нестандартные версии для печати (представления).

Остановился на четвертом способе. :)

m-r Tarakanoff tarakanoffth
The best C# and .NET days are ahead of us. (25 Mar 2010 by Miguel de Icaza)
23 сентября 2010, 15:21
835

Загрузка...

Комментарии

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Только на 10-й раз он смог поступить в Кембридж! Герой с Кармакшинского района

Только на 10-й раз он смог поступить в Кембридж! Герой с Кармакшинского района

Свыше 10 известных университетов приглашают его обучаться зарубежом, но выбор будет оставаться за Сакеном. Он выберет обучение The University of Edinburgh и отправляется в эту удивительную страну...
socium_kzo
30 нояб. 2016 / 11:06
  • 10565
  • 10
Взгляд со стороны: Назарбаев глазами кыргыза

Взгляд со стороны: Назарбаев глазами кыргыза

В чем уникальность этой личности? В чем его успех или провалы? Эти вопросы требуют глубокой аналитики и исследований. Я же хочу рассказать о Нурсултане Абишевиче глазами рядового кыргыза или...
maxes
1 дек. 2016 / 8:05
  • 4141
  • 14
Молчание врачей. Дети ЮКО, заражённые ВИЧ 10-11 лет назад, узнают о диагнозе-приговоре

Молчание врачей. Дети ЮКО, заражённые ВИЧ 10-11 лет назад, узнают о диагнозе-приговоре

Как сообщают новостные издания, в ближайшее время в Южном Казахстане 102 детям в возрасте 11-12 лет сообщат об их страшном диагнозе. Все эти дети были заражены ВИЧ, причём большинство было инфицировано по вине врачей.
openqazaqstan
2 дек. 2016 / 13:57
  • 3644
  • 3
Когда на тебя смотрят как на говно. На работе многие считали, что они выше меня уровнем

Когда на тебя смотрят как на говно. На работе многие считали, что они выше меня уровнем

Дело было летом 2012 года. Мне было почти 20 лет, жил я от сессии до сессии довольно весело. В голове машины, клубы, тёлки. Жизнь размеренная и неторопливая. Вдруг мне приходит в голову идея...
almatinec_92
28 нояб. 2016 / 16:57
Почему Дональд Трамп назвал Казахстан чудом. Президент подтягивается по географии

Почему Дональд Трамп назвал Казахстан чудом. Президент подтягивается по географии

Трамп и не подозревает, что 16 декабря 1991 Казахстан не создал, а восстановил свою национальную государственность. Иначе бы он упомянул не только 25 лет, а больше чем 550 лет казахской истории.
Stehlikova
2 дек. 2016 / 9:02
  • 3534
  • 86
О переименовании столицы: Казнет не зря взорвался едкими комментариями

О переименовании столицы: Казнет не зря взорвался едкими комментариями

Сеть облетело очень символичное видео, где г-ну Султанову в ходе пресс-конференции прямо задают этот вопрос. «Вы советовались с народом?!» – спрашивают его журналисты. На что депутат так и не смог вразумительно ответить.
openqazaqstan
28 нояб. 2016 / 14:35
  • 3411
  • 15
Мой личный опыт использования Astra Plat: мелочи в моем кармане заметно стало меньше

Мой личный опыт использования Astra Plat: мелочи в моем кармане заметно стало меньше

Давно ждал запуска электронного билетирования в общественном транспорте Астаны. В ноябре 2016 года этот день настал. Мой опыт насчитывает последние 2 недели и мне есть чем поделиться. Она не...
iamYerlan
1 дек. 2016 / 15:24
  • 2869
  • 11
Аэропорт Схипхол и Алматы. Смотришь на это и ощущение, что мы лет на тридцать отстали

Аэропорт Схипхол и Алматы. Смотришь на это и ощущение, что мы лет на тридцать отстали

Недавно пролетал через аэропорт Амстердама - Схипхол. Так как улетал из аэропорта Алматы, то не мог не начать сравнивать эти аэропорты.
Superkurt
30 нояб. 2016 / 10:09
  • 3031
  • 12
Понять и простить: почему большинство стран бывшего СССР отказалось от амнистий

Понять и простить: почему большинство стран бывшего СССР отказалось от амнистий

Президент Назарбаев предложил амнистию для совершивших преступления небольшой тяжести несовершеннолетних, пожилых, женщин и других социально уязвимых категорий осуждённых
openqazaqstan
30 нояб. 2016 / 13:45
  • 2770
  • 19