Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
мапинг
|
|||
|---|---|---|---|
|
#18+
В классе модели для вьюхи есть ряд подклассов. Если мапировать все это в контроллере получается куча кода. Как быть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2013, 20:23 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
jfjfjfjfjfjffjВ классе модели для вьюхи есть ряд подклассов. Если мапировать все это в контроллере получается куча кода. Как быть AutoMapper, если я правильно понял вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2013, 20:43 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
АбсолютjfjfjfjfjfjffjВ классе модели для вьюхи есть ряд подклассов. Если мапировать все это в контроллере получается куча кода. Как быть AutoMapper, если я правильно понял вопрос. упростил. public class ListViewModel { public IList<ViewModel> List { get; set; } public PagerViewModel PagerViewModel { get; set; } } как при помощи автомаппера смапировать PagerViewModel . Не пойму из доков ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.11.2013, 21:07 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
jfjfjfjfjfjffjВ классе модели для вьюхи есть ряд подклассов. Если мапировать все это в контроллере получается куча кода. Как бытьВынести этот код в отдельный класс, в контроллере оставить только: Код: c# 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2013, 12:31 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
skyANAjfjfjfjfjfjffjВ классе модели для вьюхи есть ряд подклассов. Если мапировать все это в контроллере получается куча кода. Как бытьВынести этот код в отдельный класс, в контроллере оставить только: Код: c# 1. ну все равно куча кода:) в ToViewModel придется передавать классы которые нужно приделывать к вью модели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 16:01 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
jfjfjfjfjfjffjskyANAпропущено... Вынести этот код в отдельный класс, в контроллере оставить только: Код: c# 1. ну все равно куча кода:) в ToViewModel придется передавать классы которые нужно приделывать к вью моделиНу можно и не передавать, а получать их внутри маппера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 16:12 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
Model-View-Controller Наиболее частые ошибкиНачинающие программисты (особенно в веб-программировании, где аббревиатура MVC стала популярна) очень часто трактуют архитектурную модель MVC как пассивную модель MVC. В этом случае модель выступает исключительно совокупностью функций для доступа к данным, а контроллер содержит бизнес-логику. В результате код моделей по факту является средством получения данных из СУБД, а контроллер представляет собой типичный модуль, наполненный бизнес-логикой, или скрипт в терминологии веб-программирования. В результате такого понимания MVC разработчики стали писать код, который Pádraic Brady, известный в кругах сообщества Zend Framework, охарактеризовал как ТТУК — «Толстые тупые уродливые контроллеры» (Fat Stupid Ugly Controllers):ПримечаниеСреднестатистический ТТУК получал данные из БД (используя уровень абстракции базы данных, делая вид, что это модель) или манипулировал, проверял, записывал, а также передавал данные в вид. Такой подход стал очень популярен потому, что использование таких контроллеров похоже на классическую практику использования отдельного php-файла для каждой страницы приложения.Но в объектно-ориентированном программировании используется активная модель MVC, где модель — это не только совокупность кода доступа к данным и СУБД, а вся бизнес-логика. В свою очередь, контроллеры представляют собой лишь элементы системы, в чьи непосредственные обязанности входит приём данных из запроса и передача их другим элементам системы. Только в этом случае контроллер становится «тонким» и выполняет исключительно функцию связующего звена (glue layer) между отдельными компонентами системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 16:16 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
skyANA Model-View-Controller Наиболее частые ошибкиНачинающие программисты (особенно в веб-программировании, где аббревиатура MVC стала популярна) очень часто трактуют архитектурную модель MVC как пассивную модель MVC. В этом случае модель выступает исключительно совокупностью функций для доступа к данным, а контроллер содержит бизнес-логику. В результате код моделей по факту является средством получения данных из СУБД, а контроллер представляет собой типичный модуль, наполненный бизнес-логикой, или скрипт в терминологии веб-программирования. В результате такого понимания MVC разработчики стали писать код, который Pádraic Brady, известный в кругах сообщества Zend Framework, охарактеризовал как ТТУК — «Толстые тупые уродливые контроллеры» (Fat Stupid Ugly Controllers):пропущено... Но в объектно-ориентированном программировании используется активная модель MVC, где модель — это не только совокупность кода доступа к данным и СУБД, а вся бизнес-логика. В свою очередь, контроллеры представляют собой лишь элементы системы, в чьи непосредственные обязанности входит приём данных из запроса и передача их другим элементам системы. Только в этом случае контроллер становится «тонким» и выполняет исключительно функцию связующего звена (glue layer) между отдельными компонентами системы. это понятно. непонятно как внутри мапера получить ... часть параметров передается из репозитория, часть из формы, которая передается именно контроллеру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.11.2013, 16:25 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
jfjfjfjfjfjffjskyANA Model-View-Controller пропущено... это понятно. непонятно как внутри мапера получить ... часть параметров передается из репозитория, часть из формы, которая передается именно контроллеру мож есть какие мысли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 00:14 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
jfjfjfjfjfjffjмож есть какие мысли? никак не быть. маппинг, это функция с одним входным параметром и одним выходным, в общем случае. остальное, это конфигурация. так что оборачивайте свою кучу кода в хелпер и радуйтесь )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 00:16 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
jfjfjfjfjfjffjjfjfjfjfjfjffjпропущено... это понятно. непонятно как внутри мапера получить ... часть параметров передается из репозитория, часть из формы, которая передается именно контроллеру мож есть какие мысли?А мне вот кажется, что Вы так и не поняли, что такое модель. Код покажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 00:53 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
skyANAjfjfjfjfjfjffjпропущено... мож есть какие мысли?А мне вот кажется, что Вы так и не поняли, что такое модель. Код покажите. по-моему - понял. ... public ActionResult Index(int idRubric = 1, int nPage = 1) { IList<_List> _List= Repo.GetListByIdRubric(idRubric); ListViewModel _ListViewModel = new ListViewModel(); PagerViewModel _PagerViewModel = new PagerViewModel(); _PagerViewModel.nPageNumber = Repo.GetPageCount(); _PagerViewModel.nCurrentPage = nPage; _ViewModel1.prop1= Repo.GetSomething1(); _ViewModel2.prop2= Repo.GetSomething2(); ... _ViewModelN.prop1= Repo.GetSomethingN(); _ViewModelN.prop2= Repo.GetSomethingN(); _ListViewModel.List = Mapper.Map<IList<_List>, IList<ListViewModel>>(_List); _ListViewModel.PagerViewModel = _PagerViewModel; ... _ListViewModel.ViewModelN= _ViewModelN; return View(_ListViewModel); } PagerViewModel нужен для партиал вью. И таких классов не один (не один партиал вью на странице) Вместо int idRubric = 1, int nPage = 1 можно класс забубенить, Но что это меняет... Mapper - автомапер Я чет туплю. Не пойму как красивее сделать. Колбаса выходит как ни крути ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2013, 15:07 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
всем отвечать на этот вопрос!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 21:39 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
goblinhdhdh, У меня есть доска, и десятки разных по величине ржавых гвоздей. Я скачал через NuGet молоток. Всем хорош, но не умеет забивать сразу все гвозди. Что делать, подскажите? НЕужели колотить по каждому гвоздю?! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 22:04 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
hVosttgoblinhdhdh, У меня есть доска, и десятки разных по величине ржавых гвоздей. Я скачал через NuGet молоток. Всем хорош, но не умеет забивать сразу все гвозди. Что делать, подскажите? НЕужели колотить по каждому гвоздю?! Мораль сей басни какова? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 22:07 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
jfjfjfjfjfjffjМораль сей басни какова? вы хотите слишком многого от молотка. типа такой большой молоток, чтобы одним махом... нет такого. уже писал вам выше. сборную модель надо собирать самому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 22:14 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
hVosttjfjfjfjfjfjffjМораль сей басни какова? вы хотите слишком многого от молотка. типа такой большой молоток, чтобы одним махом... нет такого. уже писал вам выше. сборную модель надо собирать самому. Если Вы про автомаппер, то давайте его оставим в покое. Мне неясно как код причесать. Получается колбаса как ни крути ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 22:24 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
jfjfjfjfjfjffjПолучается колбаса как ни крути крутите лучше, чтобы колбаса была вкуснее в общем, что конкретно вас не устраивает: внешний вид (много кодо) ? или что? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 22:29 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
jfjfjfjfjfjffj, пишите вспомогательные методы, для сбора одного и того же. не знаю. зависит от всего остального кода, чтобы вам что-то конкретное предложить. лично для меня, появление необходимости вот таких сборных вью приводит к необходимости пересмотреть архитектуру данных с последующей (пере) нормализацией. таким образом, чтобы существовал чётко выраженный корень аггрегации, и в итоге все решается одним автомаппером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 22:31 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
hVosttjfjfjfjfjfjffj, пишите вспомогательные методы, для сбора одного и того же. не знаю. зависит от всего остального кода, чтобы вам что-то конкретное предложить. лично для меня, появление необходимости вот таких сборных вью приводит к необходимости пересмотреть архитектуру данных с последующей (пере) нормализацией. таким образом, чтобы существовал чётко выраженный корень аггрегации, и в итоге все решается одним автомаппером. Чет я опять туплю. Возьмем отвлеченный пример. Ну например форум. /вот есть сообщение форума. в сообщении должна отображаться информация о пользователе (класс) О рубриках(ну тож класс) О Страницах(тож класс) Реклама(класс) Различные информационные блоки: Например подборка статей (класс) и тп. как в этой архитектуре с корнями быть? Включение используется для того, чтоб передавать включаемые классы модели в патиал вью во вьюхе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2013, 23:22 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
jfjfjfjfjfjffjЧет я опять туплю. Возьмем отвлеченный пример. Ну например форум. /вот есть сообщение форума. в сообщении должна отображаться информация о пользователе (класс) О рубриках(ну тож класс) О Страницах(тож класс) Реклама(класс) Различные информационные блоки: Например подборка статей (класс) и тп. как в этой архитектуре с корнями быть? Включение используется для того, чтоб передавать включаемые классы модели в патиал вью во вьюхе. Всё! Я понял вашу проблему. Вы что-нибудь слышали про принцип «Разделяй и властвуй!»? Если нет, спросите у Гая Юлия. Короче. Вы собирайте в контроллере информацию для разных инфо-блоках, чтобы напихать их во вью. Это в корне не верно. Плохая архитектура. Просто ужас. Вместо этого. Каждый инфо-блок должен представлять собой отдельный Action (и даже отдельного контроллера), который возвращает PartialView. Ваше вью в итоге будет выглядеть примерно так: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Каждое действие отдельного контроллера берет только свою информацию и маппит в простое вью. Потом это по кускам собирается на странице. Вот и решение вашей проблемы. В любом случае, когда у вас возникает такая ситуация, что вам надо напихать во вью разнородной информацией, это не просто сигнал, это ALARM-тревога, что надо производить декомпозицию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2013, 00:50 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
если отображение блока надо как-то кастомизировать, связать с основным выводом, то вы сегда можете передать параметры: @Html.Action("RelatedArticlesForPost", "Articles", new { postId = Model.Id }) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2013, 00:54 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
hVosttесли отображение блока надо как-то кастомизировать, связать с основным выводом, то вы сегда можете передать параметры: @Html.Action("RelatedArticlesForPost", "Articles", new { postId = Model.Id }) ааа. спасибо. ясно. а почему включение является плохой архитектурой... ну что колбаса выходит это понятно. а еще в чем минусы. Вы как-то обосновать это можете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2013, 01:15 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
jfjfjfjfjfjffjВы как-то обосновать это можете? Если это до сих пор для вас не очевидно, сначала плюсы: Каждый контроллер работает только со своей сущностью и не зависит от остальных (реализуя таким образом один из принципов SOLID ) У каждого действия контроллера может быть своя политика кеширования (допустим, для виджета со статистикой, вы не захотите каждый раз дёргать СУБД тяжёлым вычислительным запросом, кешируя вывод на 1 час или сутки в зависимости от его «тяжести») Каждое действие и каждый контроллер отдельно тестируются. Виджеты можно использовать неоднократно на совершенно разных страницах, независимо от того, что там выводится. Виджет можно легко вырубить, закомментировав или убрав строчку кода из вью. И не говорите, что с с @Html.PartialView якобы тоже самое. Нет, в последнем случае вы всего лишь отключаете вывод, но сбор данных и формирования ViewModel всё равно происходит). Представление любого виджета можно легко поменять, не модифицируя при этом кучу зависимого кода. ... теперь минусы: Лишаетесь всех вышеперечисленных преимущества. Если подобный виджет надо отобразить где-то ещё, придётся поднапрячься, упаковав пачку данных в другую модель. Ну и что-нибудь изменить выльется в дополнительный гемор. Вызов ChildAction связан с дополнительными накладными расходами, но ими можно пренебречь. Такую лапшу сильносвязанного кода очень тяжело поддерживать, а программистов, которые на такое соглашаются надо стрелять, ибо в плохих архитектурах больше виноваты не те, кто их создаёт, а кто не сопротивляется и за-ради-зарплаты готов ковыряться по колено в говне вместе с другими подаванами. Ещё вопросы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2013, 02:32 |
|
||
|
мапинг
|
|||
|---|---|---|---|
|
#18+
а ну да, ещё один доп. бонус. сегодня виджет у вас отображается как @Html.Action("Widget", "Controller"...) а завтра вы захотите загружать его через AJAX, всё что вам нужно будет сделать в простейшем случае, это заменить @Html.Action на <div id="myWidget"></div> и добавить в скрипты $('#myWidget').get('@Url.Action("Widget", "Controller"...'); понимаете, какая гибкость? )) можно пойти и дальше, но уже не будем об этом. будет хорошо, если мне удалось донести до вас свою Мысль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2013, 02:39 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38465737&tid=1357949]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
12ms |
get forum data: |
4ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 252ms |
| total: | 410ms |

| 0 / 0 |
