• 53812
  • 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
910

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

Комментарии

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

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

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

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

Юрист, пришедший в школу учителем по зову души, о главной проблеме системы образования

Юрист, пришедший в школу учителем по зову души, о главной проблеме системы образования

Алматинский учитель поставил диагноз системе, частью которой является образование. Будучи успешным юристом, имевший степень МВА, он вдруг развернул траекторию своей карьеры, став обычным учителем.
Zhumanova
22 сент. 2017 / 16:26
  • 10973
  • 33
«Это будут твои большие похороны». Гуф высказался о Скриптоните и Басте

«Это будут твои большие похороны». Гуф высказался о Скриптоните и Басте

Досталось и Скриптониту, который ранее опубликовал запись, о том, что больше не будет сниматься в клипе Гуфа и Тимати. "Я тебя ни о чем больше не попрошу, казах ты мой дорогой" - высказался рэпер.
tala03
21 сент. 2017 / 15:48
  • 4637
  • 12
«Честный взгляд» госслужащего: «Знала бы, что ты такой гнилой, я бы тебя не брала»

«Честный взгляд» госслужащего: «Знала бы, что ты такой гнилой, я бы тебя не брала»

Мы не такие блатные. Да, нас унижают руководители, возомнившие себя ханами, часто наши права не реализуются в должной мере. И я всегда задавался, почему на самом деле нет нормальных условий и льгот...
WriterKz
23 сент. 2017 / 0:41
Астана перестает быть городом-музеем, или Почему я хотел бы жить в столице

Астана перестает быть городом-музеем, или Почему я хотел бы жить в столице

Наш главный город страны стал избавляться от уже вполне неуместных моветонных клише, которые громоздились над ней, как черное облако над Мордором.
tentser
22 сент. 2017 / 21:04
  • 2247
  • 74
Время забыть безумные траты молодости: навыки, которыми ты должен овладеть к 30 годам

Время забыть безумные траты молодости: навыки, которыми ты должен овладеть к 30 годам

Смысл бюджета в том, чтобы знать, куда ты, блин, потратил бабки. В том, чтобы в конце месяца, ты сел, почитал свои записи и понял, какой ты придурок. И принял уже наконец здравое решение, что куда идет.
Lesch
24 сент. 2017 / 21:03
  • 1766
  • 59
Насколько вероятно стать долларовым миллионером в Казахстане

Насколько вероятно стать долларовым миллионером в Казахстане

Вообще, насколько это достижимо? Не вдаваясь в сложные рассуждения и дательные расчеты и так понятно, что это сложная задача - все-таки около 350 миллионов тенге по текущему курсу.
convoluted
вчера / 14:36
  • 1721
  • 44
Дагестанские «миротворцы» борются за справедливость в Мьянме на улицах Москвы

Дагестанские «миротворцы» борются за справедливость в Мьянме на улицах Москвы

Парней начали осуждать за поступок в социальных сетях. Популярные группы Кавказа назвали выходку парней дикой, и пояснили, что они позорят нацию и религию.
tala03
20 сент. 2017 / 16:42
  • 1744
  • 53
Как КНДР «уничтожила» американские самолеты и авианосец

Как КНДР «уничтожила» американские самолеты и авианосец

Серию коллажей, показывающую как ракеты КНДР нанесли поражения американским самолетам, продемонстрировали в северокорейских СМИ.
tala03
24 сент. 2017 / 17:58
  • 1559
  • 11
Борьба с засухой: ученые в Китае научились выращивать овощи и растения на песке

Борьба с засухой: ученые в Китае научились выращивать овощи и растения на песке

За полгода под руководством исследователей из Чунцинского университета Цзяотун было засеяно более 200 гектаров засушливой земли автономного района Внутренняя Монголия.
tala03
20 сент. 2017 / 14:10
  • 1382
  • 22