• 51794
  • 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
875

Загрузка...
Loading...

Комментарии

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

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

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

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

Как казахстанцы могут получить кусок международного рынка аутсорса?

Как казахстанцы могут получить кусок международного рынка аутсорса?

Сокурсник Илона Маска инвестировал в образовательные проекты, и теперь хочет создать в Казахстане рабочие места на глобальном рынке аутсорса.
Zhumanova
18 мая 2017 / 13:38
  • 52342
  • 23
Поддержим пенсией жиреющие банки! На что казахстанцам разрешат досрочно тратить свои накопления в ЕНПФ

Поддержим пенсией жиреющие банки! На что казахстанцам разрешат досрочно тратить свои накопления в ЕНПФ

Со стороны ЕНПФ в очередной раз прозвучало крайне неоднозначное заявление, от которого, на наш взгляд, лучше было бы воздержаться.
openqazaqstan
23 мая 2017 / 11:08
  • 8450
  • 27
Узаконенное варварство в стране, принимающей «EPXO». Еще далеко нам до «топ-30 развитых стран»

Узаконенное варварство в стране, принимающей «EPXO». Еще далеко нам до «топ-30 развитых стран»

В продвинутых государствах едва ли поймут, почему в столь развитом, успешном и преуспевающем Казахстане от имени и по заданию властей творятся такие зверства над животными.
openqazaqstan
вчера / 12:12
  • 5431
  • 77
Что бы ни сделал пешеход – все равно водитель сядет

Что бы ни сделал пешеход – все равно водитель сядет

Вопрос о равной ответственности водителя и пешехода при наезде на последних, только-только начинают обдумывать в высоких кабинетах. Но, пока государственные головы думают, водители продолжают...
Mirogloff
22 мая 2017 / 23:29
  • 4320
  • 32
Алматинские проститутки превращаются в шпионок

Алматинские проститутки превращаются в шпионок

Попасть в притоны на алматинском проспекте Сейфуллина, которых, как бы ни старались полицейские, меньше не становится, теперь можно, только зная явки и пароли.
Mirogloff
19 мая 2017 / 13:25
  • 4073
  • 38
Кого нам ждать: обнародована культурно-развлекательная программа EXPO-2017

Кого нам ждать: обнародована культурно-развлекательная программа EXPO-2017

Рианны не будет (как и ожидалось, в общем-то). Зато будут Мумий Тролль с Би-2, Эрос Рамазотти, 30 Seconds to Mars, и даже почему-то Limp Bizkit. А также фестивали J Azzia и "The Spirit of Tengri".
Clair-de-la-Lune
18 мая 2017 / 1:19
  • 4069
  • 11
В Алматы доставили чудотворную икону «Умягчение злых сердец»

В Алматы доставили чудотворную икону «Умягчение злых сердец»

Икона "Умягчение злых сердец" несет особые - сакральные, духовные смыслы. Ее намоленность ощущается даже за те секунды, пока прикасаешься губами к образу.
ValentinaVladimirska
20 мая 2017 / 0:09
  • 3029
  • 0
Да-да, я знаю, пора выходить замуж. Есть ли у меня еще время и, пожалуйста, уточните сколько?

Да-да, я знаю, пора выходить замуж. Есть ли у меня еще время и, пожалуйста, уточните сколько?

Итак давайте сразу начистоту. Мне 29. Не замужем, никогда не была, детей нет. В душе я совсем не чувствую этот возраст. Каждый раз когда задумываюсь об этом больше чем на 3 минуты, меня накрывает...
user2017
23 мая 2017 / 10:57
Выйду замуж по расчету. Брак обесценился, пора вновь возвращать ему ценность

Выйду замуж по расчету. Брак обесценился, пора вновь возвращать ему ценность

После череды неудачных романов, статусов "все сложно", ножей в спину, идея "выйти замуж по расчету" посещает все чаще. И мне не стыдно про это говорить.
energo_ulzhan
22 мая 2017 / 17:39
  • 2422
  • 53