powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / [MVC] Базовый контроллер
128 сообщений из 128, показаны все 6 страниц
[MVC] Базовый контроллер
    #38214945
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дайте убедительный довод зачем может понадобиться определять свой базовый контроллер?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215175
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот тут рассказал: http://codearticles.ru/home/articleview/2296?comment=61

Реализация IDataService подхода в ASP.NET MVC4

Без базового контроллера нонче никак.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215325
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public abstract class BaseController<T>: Controller
   wherer T: IEntity
{

   public abstract string MyName { get; }

   public ActionResult Index() {
       ...
       return View(MyName);
   }

}



Базовый контроллер с универсальной логикой CRUD еще имеет какой-то смысл. Но красивой реализации не получится.

Делать из базового контроллера поставщика данных — отвратительное решение. Очень плохое. Ты даешь любому отнаследованному контроллеру сервис ко всем вообще данным. Нельзя. Плохо. Фу-фу-фу. У MVC есть есть встроенная подсистема разрешения зависимостей и существует целая куча контейнеров на любой вкус. Надо просто это изучить и начать пользоваться.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215331
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У тебя каша в голове, логике (тем более круд) не место в контроллере. Такая логика находится в датасервисе или репозитории. Почитай уже про паттерны, надоело на бред твой отвечать.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215334
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Любой контроллер может юзать инстанс датасервиса, что тебе не нравится? Кроме плохо и фуфу арументы еще будут?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215340
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДайте убедительный довод зачем может понадобиться определять свой базовый контроллер?Что-то я не понял всей глубины вопроса. Базовый контроллер инкапсулирует в себе логику, общую для какой-то части приложения. Если таких мест в приложении нет, то базовый контроллер не нужен.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215346
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://code.google.com/p/mvc-authorization-authentication/source/browse/trunk/+mvc-authorization-authentication/MVCAuthenticationSample/BaseController.cs

Классическое применение базового контроллера, о котором я говорил тут . Правда, я бы не совсем так писал секурити, я б вынес это в отдельный класс, который прибыли к базовому контроллеру. Но не суть.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215375
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

Для начала давайте выясним какую задачу решает контроллер в классическом MVC.
M — это бизнес-логика, куда входит модель и все операции над ними.
C — это прослойка между M и V.
V — это по сути тупейший шаблон вывода данных.

В реальных веб-приложениях эта схема не может поддерживаться в идеальном виде, так на V может существовать еще одна прослойка клиентской MVC или MVVP (к примеру kendo или knockout).

Поэтому никакую логику C не должен инкапсулировать.
Хотя никто никому не может запретить откровенно говнокодить.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215381
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Не надо приводить унылое говнокодище из чужой репы. Тогда небыло глобальных фильтров. Нужна какая-то обработка для всех действий независимо от контроллера? У MVC для этого есть точки расширения, такие как глобальные фильтры например.

Не отрицаю, что в большущем проекте какой-нибудь супер-CMS может понадобиться собственная реализация контроллера и то, если это не нарушает принципов единой ответственности и не повышает связность в архитектуре. Подача данных — ошибка проектирования однозначно. В ASP.NET MVC есть встроенная инфраструктура разрешения зависимостей. Не нужно её игнорировать, если лень разбираться, то тут уже ничего не поделаешь.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215387
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,

У меня осталось на поддержке 2 проекта, где я по неопытности и незнанию делал один в один, как предлагает МСУ, т.е. базовый контроллер, передающий своим наследникам Service. Это ад. Залез в код через несколько месяцев и не имею представления о том, какой контроллер работает с какими данными, какие контроллеры меняют данные, а какие не могут. Ибо все контроллеры имеют доступ ко всем данным и могут делать с ними что угодно. Это плохо, плохо, и еще раз плохо. Это не гуд. Чугунной линейкой лупить по рукам за такую архитектуру.

Последние мои проекты используют по возможности всю мощь MVC, в том числе DI и DepencyResolver, сказка. Пока не нашлось ни одной задачи, которая бы решалась лучше всего через базовый контроллер. Все покрыто тестами, на все 100%, при разработке не используется база данных, данные генерируются так как мне надо. Потом легко сборка с DataAccessLayer подменяется на EF. Никаких изменений в коде проекта не производится. Сказка. Нет нужды лезть и ковырять базовый контроллер, чтобы сменить полностью всю бизнес-логику. При чем менять можно не только базу данных, но и вообще весь слой доступа к данным.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215415
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostthVostt,

У меня осталось на поддержке 2 проекта, где я по неопытности и незнанию делал один в один, как предлагает МСУ, т.е. базовый контроллер, передающий своим наследникам Service. Это ад. Залез в код через несколько месяцев и не имею представления о том, какой контроллер работает с какими данными, какие контроллеры меняют данные, а какие не могут. Ибо все контроллеры имеют доступ ко всем данным и могут делать с ними что угодно. Это плохо, плохо, и еще раз плохо. Это не гуд. Чугунной линейкой лупить по рукам за такую архитектуру.

Последние мои проекты используют по возможности всю мощь MVC, в том числе DI и DepencyResolver, сказка. Пока не нашлось ни одной задачи, которая бы решалась лучше всего через базовый контроллер. Все покрыто тестами, на все 100%, при разработке не используется база данных, данные генерируются так как мне надо. Потом легко сборка с DataAccessLayer подменяется на EF. Никаких изменений в коде проекта не производится. Сказка. Нет нужды лезть и ковырять базовый контроллер, чтобы сменить полностью всю бизнес-логику. При чем менять можно не только базу данных, но и вообще весь слой доступа к данным.

Один говносервис на весь проект - киськин бред, который даже обсуждать нечего.
Совсем другая история - обобщенный контроллер. Если правильно его готовить, то во многих случаях нужны только views&models, минимум кода и возможность быстро вносить изменения без перелопачивания всего проекта.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215421
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

О, я бы очень хотел посмотреть на такую реализацию!
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215443
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На правах оффтопа: Во как людям бошку забили.
Как вариант, можно собирать бутылки, или торговать шавермой.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215465
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA,

Для начала давайте выясним какую задачу решает контроллер в классическом MVC.
M — это бизнес-логика, куда входит модель и все операции над ними.
C — это прослойка между M и V.
V — это по сути тупейший шаблон вывода данных.

В реальных веб-приложениях эта схема не может поддерживаться в идеальном виде, так на V может существовать еще одна прослойка клиентской MVC или MVVP (к примеру kendo или knockout).

Поэтому никакую логику C не должен инкапсулировать.
Хотя никто никому не может запретить откровенно говнокодить.Давайте лучше выясним какую задачу решаете ВЫ.

К примеру рассмотрим CMS. В бекенде пользователь конструирует страницу, добавляет различные компоненты (модули): меню, форму логина, просто блок контента и т.п. Каждый компонент имеет своё представление (View), модель данных (Model) и соответсвенно контроллер (Controller). Вот последний и является наследником некоего ModelControllerBase к примеру с единственным действием (Action) Index(), что тупо отдаёт данные в представление.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215471
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тьфу, опечатался:
skyANAModelControllerBase ModuleControllerBase
И как пишет SeVa, если правильно его готовить, то при создание каких-то новых компонентов можно будет ограничится views&models.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215566
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSerge,

как вариант, вообще можно не копать.
вы бы лучше по теме что-нибудь сказали, а не глубокомысленно оффтопили с умным видом ))
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215569
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

речь сейчас не идёт о какой-то конкретной задаче.
в примере с компонентом/виджетом CMS есть смысл. кроме того, должна быть фабрика контроллеров для виджетов, знающая о базовом контроллере, о том как его конструировать и что ему нужно. в этом случае базовый виджет-контроллер может быть абстрактным, и тогда мы заюзаем мощь ООП. а не то, что некоторые гордо именуют «ООП»: подсовывание общих методов и свойств в базу, что является грубо говоря частным случаем глобальных свойств и функций в рамках «неймспейса» контроллера, улавливаете всю бредовость этой затеи?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215597
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttM — это бизнес-логика, куда входит модель и все операции над ними.
C — это прослойка между M и V.
V — это по сути тупейший шаблон вывода данных.
Тогда непонятно, как же ты предлагал вести логику CRUD в контроллере. Ты перечишь сам себе

hVosttПоэтому никакую логику C не должен инкапсулировать.
Хотя никто никому не может запретить откровенно говнокодить.
См. выше.

hVosttМСУ, Не надо приводить унылое говнокодище из чужой репы.
Почему ты считаешь, что это "унылое говнокодище из чужой репы", а то, что говоришь ты - не "унылое говнокодище из чужой репы"?

hVosttТогда небыло глобальных фильтров. Нужна какая-то обработка для всех действий независимо от контроллера? У MVC для этого есть точки расширения, такие как глобальные фильтры например.
Никак не возьму в толк, как коррелирует GlobalFilter и банальное наследование. Во-вторых, "тогда" - это когда? GlobalFilterCollection существуют аж с 3 версии MVC.

hVosttНе отрицаю, что в большущем проекте какой-нибудь супер-CMS может понадобиться собственная реализация контроллера и то, если это не нарушает принципов единой ответственности и не повышает связность в архитектуре.
Если не отрицаешь, то в чем, собственно, вопрос?

hVosttПодача данных — ошибка проектирования однозначно.
Как может наследование и инкапсуляция быть ошибкой проектирования?

hVosttВ ASP.NET MVC есть встроенная инфраструктура разрешения зависимостей. Не нужно её игнорировать, если лень разбираться, то тут уже ничего не поделаешь.
Раскрой тему подробнее, о чем именно речь.

hVosttУ меня осталось на поддержке 2 проекта, где я по неопытности и незнанию делал один в один, как предлагает МСУ, т.е. базовый контроллер, передающий своим наследникам Service. Это ад. Залез в код через несколько месяцев и не имею представления о том, какой контроллер работает с какими данными, какие контроллеры меняют данные, а какие не могут.
Ты уже достаточно "по опытности" нам показал, как работать с обработкой исключений. Во-вторых, что значит "не имею представления о том, какой контроллер работает с какими данными"? Если ты дурак и не разбираешься в C#, то не имеешь. Как можно читать код контроллера и не понимать, с какими данными он работает? Бред сивой кобылы.

hVosttИбо все контроллеры имеют доступ ко всем данным и могут делать с ними что угодно. Это плохо, плохо, и еще раз плохо. Это не гуд. Чугунной линейкой лупить по рукам за такую архитектуру.
Контроллеры, отнаследованные от базового, не "имеют доступ ко всем данным", а имеют доступ к общему датасервису (датасервисам). Почувствуй разницу. Во-вторых, с какими данными и как работать - не задача контроллера, а задача отдельного секьюрити класса, который доступен во всех контроллера. В-третьих, о архитектуре тебе еще рано судить, не дорос.

hVosttПоследние мои проекты используют по возможности всю мощь MVC, в том числе DI и DepencyResolver, сказка. Пока не нашлось ни одной задачи, которая бы решалась лучше всего через базовый контроллер. Все покрыто тестами, на все 100%, при разработке не используется база данных, данные генерируются так как мне надо.
Ситуация с базовым контроллером не запрещает использовать зависимости, твой фанатизм мне непонятен.

hVosttПотом легко сборка с DataAccessLayer подменяется на EF.
Вот тут рассмешил, ты еще не научился с EF работать, какой еще тут DataAccessLayer :) Во-вторых, сборка легко подменится и с ситуацией датасервиса, который интерфейсом доступен для всех контроллеров. В чем профит?

hVosttНикаких изменений в коде проекта не производится. Сказка. Нет нужды лезть и ковырять базовый контроллер, чтобы сменить полностью всю бизнес-логику. При чем менять можно не только базу данных, но и вообще весь слой доступа к данным.
Какая разница, куда лезть, в базовый контроллер или в класс, управляющий жизнью инстанса?

hVosttskyANA, речь сейчас не идёт о какой-то конкретной задаче.
Тебя пытаются вывести из сумрака и подогнать конкретную ситуацию. Речь именно о конкретной задаче.

hVosttв примере с компонентом/виджетом CMS есть смысл.
А нахрена ты тут морг всем насилуешь и срешь в моих камментах? (сцуко, забаню нахрен)

hVosttкроме того, должна быть фабрика контроллеров для виджетов, знающая о базовом контроллере
Ты бредишь. Сначала ты вещаешь о том, что базовый контроллер зло. Потом ты просвещаешь о том, что должна быть фабрика для работы с базовым контроллером. По-моему ты перегрелся.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215598
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, и ты задрал уже флудить в камментах! Если по сути рецепта нечего по сути сказать - проходи лесом.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215627
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA,

речь сейчас не идёт о какой-то конкретной задаче.
в примере с компонентом/виджетом CMS есть смысл. кроме того, должна быть фабрика контроллеров для виджетов, знающая о базовом контроллере, о том как его конструировать и что ему нужно. в этом случае базовый виджет-контроллер может быть абстрактным, и тогда мы заюзаем мощь ООП. а не то, что некоторые гордо именуют «ООП»: подсовывание общих методов и свойств в базу, что является грубо говоря частным случаем глобальных свойств и функций в рамках «неймспейса» контроллера, улавливаете всю бредовость этой затеи?Нет. Совершенно не понимаю о чём Вы собственно пытаетесь рассуждать и какой тайный смысл найти.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215770
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

1. ссылку на говнокод который ты мне скинул датируется 2009 годом . а ASP.NET MVC 3 RTM has been released January 13, 2011 . так что про глобальные фильтры совсем не в кассу. в стабильные привычки, смотрю, у тя входит скинуть ссыль на первую попавшуюся выдачу из Google, не разобравшись даже с тем, что скидываешь.

2. к вопросу «Как может наследование и инкапсуляция быть ошибкой проектирования?» , отвечаю: какая нахрен инкапсуляция??? ребенок, ты чо несешь? иди открой справочник на слове «инкапсуляция» и прочитай что это хоть значит. я уже не понимаю, ты вообще программированием как занимаешься? просто выучил ряд терминов, а что они значат знать совсем не обязательно? ну и ну...

поясню для маленьких деток. твой датасервис, который размещается в базовом классе с таким же успехом может быть доступен 1) из MvcApplication, 2) из собственного синглетона, 3) из ServiceLocator-а 4) и т.д., а проброс доступа к данным (как ты там его называешь, Service?) из базы в наследника к инкапсуляции не имеет никакого отношения.

3. к комменту «Раскрой тему подробнее, о чем именно речь.» берем первую попавшуюся книгу про ООП и постигаем что такое ООП, для чего он нужен, где применяется. потом открываем книгу про паттерны программирования и читаем, читаем, читаем.... потом уже изучаем ASP.NET MVC и узнаем, что (ничего себе!) он из коробки поддерживает аспектно-ориентированное программирование, да еще реализует ServiceLocator (предоставляя интерфейс IDepencyResolver), а с одним из популярных контейнеров еще и получаем DI. учим зачем и почему этот оверхед в коде нужен, что это даёт и к чему может привести сильная связность компонентов приложения.

4. «Как можно читать код контроллера и не понимать, с какими данными он работает?»
просто включи мозг. как ребенок, ей богу. ясен пень, что прочитав код контроллера, станет понятно с чем он работает. но будет на много лучше, если это же самое будет понятно всего лишь глядя на его конструктор.

5. «Контроллеры, отнаследованные от базового, не "имеют доступ ко всем данным", а имеют доступ к общему датасервису (датасервисам). Почувствуй разницу.»

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

6. «Какая разница, куда лезть, в базовый контроллер или в класс, управляющий жизнью инстанса?»

приехали. занавес. значит, между доступом «ко всем данным» и «к общему датасервису» какая-то фантастически-космическая разница есть, а тут разницы нет. мдаааааааааааа...


П.С. понятно теперь откуда в этих так называемых рецептах такой силищи бредятина. но если ресурс делался исключительно «для себя» тогда ок, извиняюсь, больше не трону твой ресурс. просто надо предупреждать на главной странице, что в комментах разрешено только хвалить автора за его блестящий ум.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215771
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

так если не понимаете, зачем тогда что-то писать? ))
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215803
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA,

так если не понимаетеВроде я чётко написал, чего не понимаю. Ваших рассуждений. Вот объясните мне фразу: "подсовывание общих методов и свойств в базу". И зачем Вы мне её в ответ на мой пост написали? Разве я предлагал подсовывать какие-то общие методы и свойства в базу?hVosttзачем тогда что-то писать?Я предложил рассмотреть вопрос на конкретном примере, вместо того, чтобы искать тайный смысл в сферическом вакууме.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215809
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt,
Лихо, я бы сказал смело.
Оказывается сонтроллер не рекомендуется наследовать, вот ребята то не знали (Адам Фримен,дино эспозито), кои в своих примерах
применяют эту анафему. Надо пойти дальше, и посоветовать в будущем запечатать его, а кто и попытается наследовать - пускай дрочит
IController таких перцев как бы совсем не много должно быть.
зы Не видел что там МСУ сотворил с контроллером, но смею предположить он там оптимизировал доступ к объектам.
Это как видим порочная практика перенаследования базового класса для быстро и удобного доступа к чему то, равно как и рефакторинг для определенной области кода с использованием чего то общего.
Надо смелее применять сингтоны, особенно для веб.... и точки расширения.
зы еще бы понять что это такое - "если это же самое будет понятно всего лишь глядя на его конструктор"
Но времени и ума пока на это нет, вот уже утро, а я все переписываю все проекты, в свете этого топика...
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215828
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt1. ссылку на говнокод который ты мне скинул датируется 2009 годом . а ASP.NET MVC 3 RTM has been released January 13, 2011 . так что про глобальные фильтры совсем не в кассу. в стабильные привычки, смотрю, у тя входит скинуть ссыль на первую попавшуюся выдачу из Google, не разобравшись даже с тем, что скидываешь.
В примере приводится демонстрация функционала, доступная в базовом контроллере, а именно секурность - HasUserAccessToModule, о которой я говорил тут 14144190 . Расскажи нам, как собираешься подобное реализовывать в глобальном фильтре? Побежал за попкорном.

hVostt2. к вопросу «Как может наследование и инкапсуляция быть ошибкой проектирования?» , отвечаю: какая нахрен инкапсуляция??? ребенок, ты чо несешь? иди открой справочник на слове «инкапсуляция» и прочитай что это хоть значит. я уже не понимаю, ты вообще программированием как занимаешься? просто выучил ряд терминов, а что они значат знать совсем не обязательно? ну и ну...
Тем неучам, кто не обрабатывает исключения в приложении и говорит, что у него никогда не падает код - не понять. Разжевываю для тех, кто в танке. Вот тут 14144190 я писал:
...МСУКлассическое применение базового контроллера, о котором я говорил тут. Правда, я бы не совсем так писал секурити, я б вынес это в отдельный класс, который прибыли к базовому контроллеру. Но не суть.
То есть - секьюрити инкапсулировано в отдельном классе, отруливающим что можно делать пользователю. Сам класс прокидывается в базовом контроллере и доступен всем наследникам. Шагом марш в школу, недоросль.

hVosttпоясню для маленьких деток. твой датасервис, который размещается в базовом классе с таким же успехом может быть доступен 1) из MvcApplication, 2) из собственного синглетона, 3) из ServiceLocator-а 4) и т.д., а проброс доступа к данным (как ты там его называешь, Service?) из базы в наследника к инкапсуляции не имеет никакого отношения.
Ты даже уже не помнишь, о чем шла речь - не мудрено. Сначала иди почитай, что такое EF и логирование в приложении, а потом мы поговорим за инкапсуляцию. Речь шла о секурити классе, бестолочь (наследование + инкапсуляция).

hVostt3. к комменту «Раскрой тему подробнее, о чем именно речь.» берем первую попавшуюся книгу про ООП и постигаем что такое ООП, для чего он нужен, где применяется. потом открываем книгу про паттерны программирования и читаем, читаем, читаем.... потом уже изучаем ASP.NET MVC и узнаем, что (ничего себе!) он из коробки поддерживает аспектно-ориентированное программирование, да еще реализует ServiceLocator (предоставляя интерфейс IDepencyResolver), а с одним из популярных контейнеров еще и получаем DI. учим зачем и почему этот оверхед в коде нужен, что это даёт и к чему может привести сильная связность компонентов приложения.
А теперь подумай своим унылым мозгом, причем тут наследование? Или ты хочешь сказать, что с появлением IDependencyResolver в MVC отпала надобность в наследовании? Бред сивой кобылы, которая ничего не понимает в IoC и ООП - в кучу смешалось всё, люди, кони...

hVostt4. просто включи мозг. как ребенок, ей богу. ясен пень, что прочитав код контроллера, станет понятно с чем он работает. но будет на много лучше, если это же самое будет понятно всего лишь глядя на его конструктор.
Ты как доходяга - кто тебе запрещает использовать конструктор базового контроллера? Протаскивай там свой entry point в виде IDataService и инициализируй свойство. Тебе кто-то связал руки?

hVostt5. поясни разницу, которую я должен почувствовать. что ты там называешь датасервисом, или чем-то еще, совершенно неважно. главное доступ через Это к данным ко всем есть. и ограничить его никак нельзя, так как базовый класс на всех один. или переформулируй что ты имеешь в виду, не взрывай мозг.
Не понимаю твоей логики, ты не понимаешь разницу между базовым классом и наследником, но берешься что-то опровергать. Может таки в сад?

hVostt6. приехали. занавес. значит, между доступом «ко всем данным» и «к общему датасервису» какая-то фантастически-космическая разница есть, а тут разницы нет. мдаааааааааааа...
Ничего не понял, опять какой-то поток феерической фантазии. У тебя сложности с построением предложений? Еще раз и по порядку.

hVosttП.С. понятно теперь откуда в этих так называемых рецептах такой силищи бредятина.
У тебя нет мозгов, чтобы понять эту бредятину.

hVosttно если ресурс делался исключительно «для себя» тогда ок, извиняюсь, больше не трону твой ресурс. просто надо предупреждать на главной странице, что в комментах разрешено только хвалить автора за его блестящий ум.
Вот это ты зачем ляпнул? Во-первых, глупость. Во-вторых, интересно - возьми и проверь.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215838
MVC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC
Гость
авторДайте убедительный довод зачем может понадобиться определять свой базовый контроллер?
Passing data to the master page
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215853
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

вопрос был поднят, вопрос. не может ли обернуться на первый взгляд видимое удобство быстрого доступа к объектам просунутое через базовый контроллер, проблемами в сопровождении, при развитии фреймворка (в будущих версиях MVC 5,6,...), в комплексном тестировании и в командной работе. т.е. в общем и целом. я понимаю, что конкретной задаче конкретное решение, но мы говорим про фреймворк в целом, а фреймворк — это уже само по себе общее решение для огромной группы задач. вот о нем речь и идет. кто мыслит исключительно конкретными задачами, пусть сразу пишет себе полностью собственный фреймворк под свою конкретную задачу и не задает глупых вопросов «давай задачу» в этом топике.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215855
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttвопрос был поднят, вопрос. не может ли обернуться на первый взгляд видимое удобство быстрого доступа к объектам просунутое через базовый контроллер, проблемами в сопровождении
Не может. Был не просто поднят вопрос (иначе тебе просто ответили бы), а были высказаны тобой бредни про сферического коня в вакууме с метанием слюны про DI и прочий шелест листьев об ООП. Почувствуй разницу между "вопрос был поднят, вопрос".
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215861
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Вот те на, пожалуйста, ребенок:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
	public class AccessToModuleFilter : IActionFilter
	{
		private const string cookieName = "AccessibleMenus";

		public void OnActionExecuting(ActionExecutingContext filterContext)
		{
			var requestContext = filterContext.RequestContext;
			var cookie = requestContext.HttpContext.Request.Cookies[cookieName];
			if (cookie != null)
			{
				filterContext.Controller.ViewData[cookieName] = cookie.Value.Split(',').ToList();
				return;
			}

			AuthenticationProjectPrincipal raPrincipal = requestContext.HttpContext.User as AuthenticationProjectPrincipal;
			if (raPrincipal == null)
				return;

			IList<string> modules = GetAccessableModuleNames(raPrincipal.UserData.UserID);
			filterContext.Controller.ViewData[cookieName] = modules;

			cookie = new HttpCookie(cookieName, string.Join(",", modules.ToArray()))
			{
				Expires = DateTime.Now.AddMinutes(20)
			};
			requestContext.HttpContext.Response.Cookies.Add(cookie);
		}

		public void OnActionExecuted(ActionExecutedContext filterContext)
		{
		}


		private IList<string> GetAccessableModuleNames(int userId)
		{
			try
			{
				IList<string> modNames = new List<string>();
				foreach (var module in Enum.GetValues(typeof(Modules)))
				{
					if (this.HasUserAccessToModule(userId, Convert.ToByte(module)))
						modNames.Add(module.ToString());
				}

				return modNames;
			}

			catch (Exception e)
			{
				throw e;
			}
		}

		private bool HasUserAccessToModule(int userId, byte moduleId)
		{
			using (AuthenticationDemoEntities dbContext = new AuthenticationDemoEntities())
			{
				try
				{
					int functionId = Convert.ToInt32(Functions.Access);

					Users user = dbContext.Users
						.Include("AccessToModuleFunctions")
						.Include("Role")
						.Include("AccessToModuleFunctions.ModulesFunctions")
						.Include("AccessToModuleFunctions.ModulesFunctions.Module")
						.Include("AccessToModuleFunctions.ModulesFunctions.Function")
						.FirstOrDefault(usr => usr.ID == userId);

					if (user == null)
						return false;

					AccessToModuleFunctions userFunc = user.AccessToModuleFunctions
					 .SingleOrDefault(modFunc => modFunc.ModulesFunctions.Function.ID == functionId
						 && modFunc.ModulesFunctions.Module.ID == moduleId);
					if (userFunc == null)
					{
						if (user.Role == null)
							return false;

						userFunc = GetAccessByRoleModuleFunciton(user.Role.ID, moduleId, (long)Functions.Access);
						if (userFunc == null)
							return false;
					}

					return userFunc.HasAccess ?? false;
				}
				catch (Exception e)
				{
					throw e;
				}
			}
		}

		private AccessToModuleFunctions GetAccessByRoleModuleFunciton(int roleId, byte moduleId, long functionId)
		{
			using (AuthenticationDemoEntities dbContext = new AuthenticationDemoEntities())
			{
				try
				{
					return dbContext.AccessToModuleFunctions
						.FirstOrDefault(urmf => urmf.Role.ID == roleId && urmf.ModulesFunctions.Module.ID == moduleId
							&& urmf.ModulesFunctions.Function.ID == functionId);
				}
				catch (Exception ex)
				{
					throw ex;
				}
			}
		}

	}



1. Не засираем код базового контроллера.
2. Не заставляем никого наследоваться от базового контроллера и следить за этим.
3. Можем вешать данное поведение только на конкретные, нужные нам, контроллеры или даже на действия.
4. Если надо вообще на все контроллеры/действия, регистрируем фильтр глобально.
5. Если надо подменить срочно на другую реализацию, изменяем одну строчку в регистрации фильтров, а ты иди перелопачивай свой базовый контроллер, и успехов тебе в этом!

Если такая элементарщина вызывает у тебя проблему, я вообще не понимаю смысл нашей полемики. Иди учи матчасть, дитё.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215864
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Более того! В регистрации глобальных фильтров можно регистрировать интерфейс и резолвить нужную реализацию. Тогда мы сможем подменять вообще любую реализацию по заданным условиям где и как угодно. Допустим на локал-хосте одна, на продакшене другая, для тестов третья. И я погляжу как ты будешь подменять реализацию базового контроллера.

Читай книжечки всяких Фрименов и Экспозито, МСУ, практикуйся, учись. Верю, у тебя все получится. Когда-нибудь до тебя допрет, что говнокод к хорошему не приводит.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215869
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУТем неучам, кто не обрабатывает исключения в приложении и говорит, что у него никогда не падает код - не понять.

до тебя шутки юмора так же доходят, как практические знания. наверное даже книжки читать тебе бессмысленно.

МСУТо есть - секьюрити инкапсулировано в отдельном классе, отруливающим что можно делать пользователю. Сам класс прокидывается в базовом контроллере и доступен всем наследникам.

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

МСУА теперь подумай своим унылым мозгом, причем тут наследование? Или ты хочешь сказать, что с появлением IDependencyResolver в MVC отпала надобность в наследовании?

предпочти слабую связность наследованию. агрегацию, резолвинг, аспекты. это все лучше наследования, практически всегда. если только ты не разрабатываешь фреймворк. тогда я спорить не буду. а покажешь своё детище еще и спасибо скажу.

МСУТы как доходяга - кто тебе запрещает использовать конструктор базового контроллера? Протаскивай там свой entry point в виде IDataService и инициализируй свойство. Тебе кто-то связал руки?

а нахрена? с самого начала я задал этот вопрос. нахрена козе баян?

МСУВот это ты зачем ляпнул? Во-первых, глупость. Во-вторых, интересно - возьми и проверь.

это был вопрос, который по-любому напрашивается. я-то проверю когда мне понадобится, но ты ж рецепт выкинул. я попросил уточнения, а ты его оказывается не знаешь. знал бы просто запостил генерируемый SQL, было бы больше пользы. но ты будешь носом воротить «тебе надо, ты и проверяй». я уже понял что ресурс ты сделал для себя исключительно, а комменты только для приёма «спасибо», только вижу не больно-то они используются по назначению... в общем, не можешь вести ресурс, не берись. не пиарь его на каждом шагу.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215875
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot hVostt]МСУ,

Вот те на, пожалуйста, ребенок:

гавнокод
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
	public class AccessToModuleFilter : IActionFilter
	{
		private const string cookieName = "AccessibleMenus";

		public void OnActionExecuting(ActionExecutingContext filterContext)
		{
			var requestContext = filterContext.RequestContext;
			var cookie = requestContext.HttpContext.Request.Cookies[cookieName];
			if (cookie != null)
			{
				filterContext.Controller.ViewData[cookieName] = cookie.Value.Split(',').ToList();
				return;
			}

			AuthenticationProjectPrincipal raPrincipal = requestContext.HttpContext.User as AuthenticationProjectPrincipal;
			if (raPrincipal == null)
				return;

			IList<string> modules = GetAccessableModuleNames(raPrincipal.UserData.UserID);
			filterContext.Controller.ViewData[cookieName] = modules;

			cookie = new HttpCookie(cookieName, string.Join(",", modules.ToArray()))
			{
				Expires = DateTime.Now.AddMinutes(20)
			};
			requestContext.HttpContext.Response.Cookies.Add(cookie);
		}

		public void OnActionExecuted(ActionExecutedContext filterContext)
		{
		}


		private IList<string> GetAccessableModuleNames(int userId)
		{
			try
			{
				IList<string> modNames = new List<string>();
				foreach (var module in Enum.GetValues(typeof(Modules)))
				{
					if (this.HasUserAccessToModule(userId, Convert.ToByte(module)))
						modNames.Add(module.ToString());
				}

				return modNames;
			}

			catch (Exception e)
			{
				throw e;
			}
		}

		private bool HasUserAccessToModule(int userId, byte moduleId)
		{
			using (AuthenticationDemoEntities dbContext = new AuthenticationDemoEntities())
			{
				try
				{
					int functionId = Convert.ToInt32(Functions.Access);

					Users user = dbContext.Users
						.Include("AccessToModuleFunctions")
						.Include("Role")
						.Include("AccessToModuleFunctions.ModulesFunctions")
						.Include("AccessToModuleFunctions.ModulesFunctions.Module")
						.Include("AccessToModuleFunctions.ModulesFunctions.Function")
						.FirstOrDefault(usr => usr.ID == userId);

					if (user == null)
						return false;

					AccessToModuleFunctions userFunc = user.AccessToModuleFunctions
					 .SingleOrDefault(modFunc => modFunc.ModulesFunctions.Function.ID == functionId
						 && modFunc.ModulesFunctions.Module.ID == moduleId);
					if (userFunc == null)
					{
						if (user.Role == null)
							return false;

						userFunc = GetAccessByRoleModuleFunciton(user.Role.ID, moduleId, (long)Functions.Access);
						if (userFunc == null)
							return false;
					}

					return userFunc.HasAccess ?? false;
				}
				catch (Exception e)
				{
					throw e;
				}
			}
		}

		private AccessToModuleFunctions GetAccessByRoleModuleFunciton(int roleId, byte moduleId, long functionId)
		{
			using (AuthenticationDemoEntities dbContext = new AuthenticationDemoEntities())
			{
				try
				{
					return dbContext.AccessToModuleFunctions
						.FirstOrDefault(urmf => urmf.Role.ID == roleId && urmf.ModulesFunctions.Module.ID == moduleId
							&& urmf.ModulesFunctions.Function.ID == functionId);
				}
				catch (Exception ex)
				{
					throw ex;
				}
			}
		}

	}



Садись, неуч, двойка. За реализацию секьюрити - уволить без выплаты материального пособия.

Смотри и учись - логика сеьюрити должна быть запечана в отдельном классе, а не фильтре, контроллере и т.п.:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public class Security
{
    public SecurityUser User { get; set; }
    public bool HasUserAccessToModule(int userId, byte moduleId)
    {
        return true;
    }
}

public class SecurityUser
{
    public int Id { get; set; }
    public bool IsAdmin { get; set; }
    public bool IsMember { get; set; }
}



Базовый контроллер - лишь удобный проводник для логики безопасности:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
public class BaseController : Controller
{
    public Security Security { get; private set; }

    public BaseController()
    {
        this.Security = new Security();
    }
}



Всё. Теперь мы можем удобно отруливать свойством Security во всех контроллерах и представлениях (через ViewContext.Controller) без каких-либо телодвижений с моделями представлений.

hVosttЕсли такая элементарщина вызывает у тебя проблему, я вообще не понимаю смысл нашей полемики. Иди учи матчасть, дитё.
Если это для тебя такая же элементарщина, как обработка исключений в приложении и логирование - я плакал.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215876
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttБолее того! В регистрации глобальных фильтров можно регистрировать интерфейс и резолвить нужную реализацию. Тогда мы сможем подменять вообще любую реализацию по заданным условиям где и как угодно. Допустим на локал-хосте одна, на продакшене другая, для тестов третья. И я погляжу как ты будешь подменять реализацию базового контроллера.

Читай книжечки всяких Фрименов и Экспозито, МСУ, практикуйся, учись. Верю, у тебя все получится. Когда-нибудь до тебя допрет, что говнокод к хорошему не приводит.


Дурилко картонное, как мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав? Тебе не то, что Экспозито, тебе программировать противопоказано, теоретик.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215883
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУСадись, неуч, двойка. За реализацию секьюрити - уволить без выплаты материального пособия.

ты вообще в адеквате?

вот твой коммент:

МСУВ примере приводится демонстрация функционала, доступная в базовом контроллере, а именно секурность - HasUserAccessToModule, о которой я говорил тут 14144190 . Расскажи нам, как собираешься подобное реализовывать в глобальном фильтре? Побежал за попкорном.

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

мдааааааааааааааааа..................... умора ей богу.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215890
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

я не собираюсь здесь обсуждать реализацию секьюрити, не съезжай с темы. хочешь обсудить как правильно готовить секьюрити, создавай отдельную тему, обсудим. не уходи от основного вопроса. давай мне убойный пример, такой где собственный базовый контроллер будет действительно иметь смысл.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215897
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttдо тебя шутки юмора так же доходят, как практические знания. наверное даже книжки читать тебе бессмысленно.
Не обработка исключений - это нынче такие шутки у тебя? Шутник, однако.

hVosttответил выше. все это из коробки и легко решается фильтром, и неча засирать базу таким бредом. привел бы хоть один убедительный аргумент, что решается лучше всего только через базу. но не можешь же. одну лажу гонишь.
С фильтром ты можешь сходить в ясли и детей посмешить. Я тебе ответил почему - лажа у тебя в голове от непонимания.

hVosttпредпочти слабую связность наследованию. агрегацию, резолвинг, аспекты. это все лучше наследования, практически всегда. если только ты не разрабатываешь фреймворк. тогда я спорить не буду. а покажешь своё детище еще и спасибо скажу.
Для каждой задачи - своя отвертка. Ты же пытаешь подо всё подогнать молоток. Это лишь говорит об отсутствии реального опыта - просто унылая кодирующая обезьянка, которая смотрит как дяди пишут. Тебе дали реальную задачу - ты начал что-то булькать невнятное. Потом ты начал плести бред, что да, базовый контроллер нужен. Теперь ты несешь бред про DI. Ты определись, чудо, больно смешно смотреть на твои рыпанья.

hVosttМСУТы как доходяга - кто тебе запрещает использовать конструктор базового контроллера? Протаскивай там свой entry point в виде IDataService и инициализируй свойство. Тебе кто-то связал руки?
а нахрена? с самого начала я задал этот вопрос. нахрена козе баян?
Я тебе ответил - для того, чтобы протащить базовый функционал в наследники. У тебя непонимание, для чего нужно наследование в ООП, или что?

hVosttэто был вопрос, который по-любому напрашивается.
Не знаю. У адекватного человека он не напрашивается - берешь и смотришь выхлоп. Ты же это сделал с такой издевкой, мол что за гавно там может сгенериться. И опять облажался, ибо там всё нормально транслируется.

hVosttя-то проверю когда мне понадобится, но ты ж рецепт выкинул.
Еще раз, ты не просто спросил, а вбросил очередной флуд в виде намека, что сгенерится гавно. Ты дурак что-ли, вообще не понимаешь о чем речь?

hVosttя попросил уточнения, а ты его оказывается не знаешь.
См. выше, это не просьба уточнить, это флудерастия, которую удалять нахрен.

hVosttзнал бы просто запостил генерируемый SQL, было бы больше пользы.
Зачем? Там обычный линейных выхлоп для and и or.

hVosttно ты будешь носом воротить «тебе надо, ты и проверяй». я уже понял что ресурс ты сделал для себя исключительно, а комменты только для приёма «спасибо», только вижу не больно-то они используются по назначению... в общем, не можешь вести ресурс, не берись. не пиарь его на каждом шагу.
1. Ресурс изначально был для меня, я об этом писал.
2. Не видишь назначения - это твои проблемы. Мне зачем твои изливания?
3. Я уж сам как-то определюсь, какой мне ресурс вести, а какой не вести, ок?
4. Я его не пиарю и тем более на каждом шагу, я даю пруф ссылки по теме.

Еще вопросы?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215901
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

я не собираюсь здесь обсуждать реализацию секьюрити, не съезжай с темы. хочешь обсудить как правильно готовить секьюрити, создавай отдельную тему, обсудим. не уходи от основного вопроса. давай мне убойный пример, такой где собственный базовый контроллер будет действительно иметь смысл.

По-моему, съезжаешь ты. Третий раз спрашиваю, не уходи от темы:

МСУкак мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав?

По-моему простой вопрос - ответ будет?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215902
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

вот те родной кейс:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
		[HttpPost]
		[AllowAnonymous]
		[ValidateAntiForgeryToken]
		public ActionResult Login(LoginModel model, string returnUrl)
		{
			if (ModelState.IsValid && WebSecurity.Login(model.UserName, model.Password, persistCookie: model.RememberMe))
			{
				return RedirectToLocal(returnUrl);
			}

			// If we got this far, something failed, redisplay form
			ModelState.AddModelError("", "The user name or password provided is incorrect.");
			return View(model);
		}



скажи мне, друг, в какое место тут впилась твоя Security в базовом контроллере??
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215903
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttты привел пример, я его перебросил на фильтры.
Я тебе задал вопрос про отруливание секьюрити в UI, как будешь это делать с помощью фильтра? Нужно админу один функционал показать, менеджеру - другой, вьюверу - третий.

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

мдааааааааааааааааа..................... умора ей богу.
Ты либо дурак, либо идиот. Выбирай.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215907
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttскажи мне, друг, в какое место тут впилась твоя Security в базовом контроллере??
Я тебя 4-ый раз спрашиваю:
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215908
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttскажи мне, друг, в какое место тут впилась твоя Security в базовом контроллере??
Я тебя 4-ый раз спрашиваю:

МСУкак мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав?

Где ответ?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215923
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУДля каждой задачи - своя отвертка. Ты же пытаешь подо всё подогнать молоток. Это лишь говорит об отсутствии реального опыта - просто унылая кодирующая обезьянка, которая смотрит как дяди пишут. Тебе дали реальную задачу - ты начал что-то булькать невнятное. Потом ты начал плести бред, что да, базовый контроллер нужен. Теперь ты несешь бред про DI. Ты определись, чудо, больно смешно смотреть на твои рыпанья.

ну всё, если прозвучало слово «обезьянка», значит разумные аргументы кончились ))))) ты в своём репертуаре, респект!

МСУЯ тебе ответил - для того, чтобы протащить базовый функционал в наследники. У тебя непонимание, для чего нужно наследование в ООП, или что?

вот и спрашивается, зачем его туда тащить? тебе возможностей расширения из коробки мало?

МСУЕще раз, ты не просто спросил, а вбросил очередной флуд в виде намека, что сгенерится гавно. Ты дурак что-ли, вообще не понимаешь о чем речь?

так ты покажешь SQL? или ты настолько уверен в своих словах, что проверять ничего не нужно?

МСУЕще вопросы?

задето твое раздутое ЧСВ, я уже понял. остальное уже не имеет никакого значения.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215928
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttну всё, если прозвучало слово «обезьянка», значит разумные аргументы кончились ))))) ты в своём репертуаре, респект!
Ты аргументы пропускаешь мимо ушей и не отвечаешь на прямые вопросы. Так что давай не будем про репертуар.


hVosttвот и спрашивается, зачем его туда тащить? тебе возможностей расширения из коробки мало?
Это абсолютно разные задачи и решаются по-разному. Наследование - никаким образом не коррелирует с задачами DI, двоешник.

hVosttтак ты покажешь SQL? или ты настолько уверен в своих словах, что проверять ничего не нужно?
Я уверен в своих словах на 100%. Тебя устраивает такой ответ?

hVosttзадето твое раздутое ЧСВ, я уже понял. остальное уже не имеет никакого значения.
Имеет - ответь на вопрос про отруливание UI в разрезе пользовательских полномочий. 5-ый раз прошу ответить.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215930
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

если надо фильтровать данные по юзеру, это вообще не задача контроллера, а бизнес-логики.

если надо ограничить доступ к действиям, например, по ролям, есть вот такая штука [Authorize(Roles = "admin,manager")] — или пишешь свой фильтр, можешь на базе стандартного или полностью свой.

еще вопросы??
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215932
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

если надо фильтровать данные по юзеру, это вообще не задача контроллера, а бизнес-логики.

если надо ограничить доступ к действиям, например, по ролям, есть вот такая штука [Authorize(Roles = "admin,manager")] — или пишешь свой фильтр, можешь на базе стандартного или полностью свой.

еще вопросы??

Какой в зад Authorize?! Ты точно инопланетянен...

Для тех, кто в танке - еще раз, с пережевыванием ситуации: нужно отстроить UI в разрезе полномочий HasUserProductsView, HasUserProductsEdit, HasUserProductsDelele. Причем тут Authorize?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215935
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

тебе никто не мешает иметь свой синглетон типа WebSecurity, доступный во всем приложении. нет смысла его тащить в контроллер. но если так уж хочется «сахара», создай Extensions для контроллера. я не понимаю, почему мы скатились до обсуждения откуда стучаться к своему Security, ты можешь его засунуть в базу, никто тебе не мешает. но необходимости в этом нет никакой абсолютно.

кроме того, всем ли контроллерам нужен этот Security? чем вот такой вариант плох:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
public MyController: Controller {
   
    public MyController(ISecurityService securityService)
    {
        _securityService = securityService;
    }

}
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215937
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttесли надо фильтровать данные по юзеру, это вообще не задача контроллера, а бизнес-логики
1. А кто тебе сказал, что эту задачу решает контроллер? Эту задачу решает секьюрити класс - в нем вся логика в разрезе безопасности. В контроллере лишь прокинут доступ к этом механизму. Ты всегда понимаешь элементарные вопросы с 10 раза?
2. Что такое "надо фильтровать данные по юзеру"? Что за новый бред?

У тебя сложности с понимаем этого вопроса?

"как мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав?"
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215940
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУДля тех, кто в танке - еще раз, с пережевыванием ситуации: нужно отстроить UI в разрезе полномочий HasUserProductsView, HasUserProductsEdit, HasUserProductsDelele. Причем тут Authorize?

какая хреновая архитектура, если у тебя есть такие методы. уже много лет это делается через роли. не HasUserProductEdit, а ProductEditor к примеру. и доступ к ролям юзера есть и в контроллере и во вьюхах. проверяй — нехочу. User.IsInRole() тебе в помощь юный падаван.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215941
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, тебе никто не мешает иметь свой синглетон типа WebSecurity, доступный во всем приложении.
Аааа...! А как же фильтр? А как же DI?

hVosttнет смысла его тащить в контроллер. но если так уж хочется «сахара», создай Extensions для контроллера. я не понимаю, почему мы скатились до обсуждения откуда стучаться к своему Security, ты можешь его засунуть в базу, никто тебе не мешает. но необходимости в этом нет никакой абсолютно.
1. За синглтон - сразу тебя уволить нахрен.
2. За отдельный Extensions для контроллера: вот скажи мне, ты реально дурак или прикидываешься? Security глобален для всего приложения и даже нескольких приложений, причем тут "Extensions для контроллера"? Ты не понимаешь, что несешь бред сивой кобылы?

hVosttкроме того, всем ли контроллерам нужен этот Security? чем вот такой вариант плох:
Всем. И не только контроллерам.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215944
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУ1. А кто тебе сказал, что эту задачу решает контроллер? Эту задачу решает секьюрити класс - в нем вся логика в разрезе безопасности. В контроллере лишь прокинут доступ к этом механизму. Ты всегда понимаешь элементарные вопросы с 10 раза?
2. Что такое "надо фильтровать данные по юзеру"? Что за новый бред?

У тебя сложности с понимаем этого вопроса?

"как мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав?"

я вижу ты первый в мире кто открыл, что оказывается можно строить UI в разрезе пользовательских прав. для этого в ASP.NET все есть. еще раз, User.IsInRole() тебе в помощь. а что за этим стоит, твоя реализация или стандартная, уже by design.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215946
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

МСУДля тех, кто в танке - еще раз, с пережевыванием ситуации: нужно отстроить UI в разрезе полномочий HasUserProductsView, HasUserProductsEdit, HasUserProductsDelele. Причем тут Authorize?

какая хреновая архитектура, если у тебя есть такие методы. уже много лет это делается через роли. не HasUserProductEdit, а ProductEditor к примеру. и доступ к ролям юзера есть и в контроллере и во вьюхах. проверяй — нехочу. User.IsInRole() тебе в помощь юный падаван.
Невооруженным глазом видно, что у тебя просто нет опыта работы с подобными приложениями. Далеко не всё в роли упирается.
Например:

HasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7).

Проблемы с архитектурой у тебя в голове, а не у меня в коде. Сначала дорасти до реальных задач, а потом говори за архитектуру других. С User.IsInRole можешь сходить в сад, где тебе и место.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215947
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

МСУ1. А кто тебе сказал, что эту задачу решает контроллер? Эту задачу решает секьюрити класс - в нем вся логика в разрезе безопасности. В контроллере лишь прокинут доступ к этом механизму. Ты всегда понимаешь элементарные вопросы с 10 раза?
2. Что такое "надо фильтровать данные по юзеру"? Что за новый бред?

У тебя сложности с понимаем этого вопроса?

"как мне с помощью твоих фильтров отстроить UI в разрезе пользовательских прав?"

я вижу ты первый в мире кто открыл, что оказывается можно строить UI в разрезе пользовательских прав. для этого в ASP.NET все есть. еще раз, User.IsInRole() тебе в помощь. а что за этим стоит, твоя реализация или стандартная, уже by design.

Садись, двойка. С User.IsInRole ты можешь детей повеселить, бездарь
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215949
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

я пока не вижу, преимуществ базового контроллера за исключением «сахара». создавать , провайдить и хранить объект секьюрити можно где угодно. база контроллера не лучшее место. но весьма удобное для неопытных программеров. которые не понимают смысла в слабой связности.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215951
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

я пока не вижу, преимуществ базового контроллера за исключением «сахара». создавать , провайдить и хранить объект секьюрити можно где угодно. база контроллера не лучшее место. но весьма удобное для неопытных программеров. которые не понимают смысла в слабой связности.

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

Убей себя об стену, бестлочь
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215952
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУHasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7).

это все говорит о явно отвратительном дизайне приложения. надо как можно сильней все усложнить и запутать, чтобы потом для окружающих казаться умным, так чтоли? ЧСВ, смотрю, не даёт покоя. надо постоянно его подтверждать. например, черезвычайно усложненной архитекторой.

и еще, пиши в Майкрософ, пусть увольняют своих разрабов нахрен, за User.IsInRole() . ничего они в программировании не понимают. лучше пусть тебя пригласят главным архитектором.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215956
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУHasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7).

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

Это банальная безопасность, чайник :) Но для тех, кто всю жизнь клепает сайты визитки и не обрабатывает исключения - да, это плохой дизайн и глупые бизнес-требования.

hVosttЧСВ, смотрю, не даёт покоя. надо постоянно его подтверждать. например, черезвычайно усложненной архитекторой.
Ты просто еще не дорос до архитектуры, твое дело слушать дядей, которые определяют, где кнопку разместить в UI.

hVosttи еще, пиши в Майкрософ, пусть увольняют своих разрабов нахрен, за User.IsInRole() . ничего они в программировании не понимают. лучше пусть тебя пригласят главным архитектором.
Ты до сих пор так ничего и не понял, мальчик. User.IsInRole - это всего-лишь частный случай. Безопасность (CanView, CanEdit, CanDelete, Can..., Can..., ...) намного сложнее и замороченнее, чем User.IsInRole.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215957
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУСначала ты говорил, что нужен DI. Потом после того, как тебя хорошенько отшлепали, ты начал предлагать еще более безумные варианты - синглтон или экстеншен для контроллера. Потом ты с треском провалился по безопасности, абсолютно не разобравшись в предметной области построения секурити классов. И теперь на тебе - ты видишь в этом сахар.

вкупе к раздутому ЧСВ, еще и развитое воображение. чего несешь? вопрос изначально состоит в том, где может понадобиться базовый контроллер. убедительного примера от тебя так и не последовало. единственный код, который ты мне скинул легко переписался на фильтрах. остальное все бла-бла-бла, переиначивание, обезьянки, какие-то шлепания, попытка съехать на реализацию секьюрити, которая сам же и сказал, к контроллеру не привязана, а нужна во всем приложении. если так, то какого черта??? при чем тогда тут базовый контроллер? что за шиза? ответь по существу, если есть что.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215961
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУ Безопасность (CanView, CanEdit, CanDelete, Can..., Can..., ...) намного сложнее и замороченнее, чем User.IsInRole.

не забудем добавить: «.. у МСУ», ибо этот товарищь обажает все усложнять, так он выглядит гораздо статней, умнее. и нужнее к слову говоря, ибо никто кроме него в коде не разберется. к любой программе, вышедшей из под рук МСУ требуется обязательное приложение: МСУ. видел я таких. и уволить нельзя, и оставить накладно. пусть болтается себе там в комроке, пишет свой говнокод.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215963
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

МСУСначала ты говорил, что нужен DI. Потом после того, как тебя хорошенько отшлепали, ты начал предлагать еще более безумные варианты - синглтон или экстеншен для контроллера. Потом ты с треском провалился по безопасности, абсолютно не разобравшись в предметной области построения секурити классов. И теперь на тебе - ты видишь в этом сахар.

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

Вопрос изначально состоит в том, что ты нихрена не понимаешь предметики - и лезешь своим носом в дела, с которыми не имел опыта работать.

Если интересно помыслишь над секурити абстракциями, наследования ролей, наследования правил (пермиссий), управлениями контейнерами групп, динамических ролевых условий (фейков) - посмотри мой старенький проект по кастомизации мембершипа: http://msadmin.codeplex.com

Хотя рано тебе такие вещи давать. Если такая безопасность

...HasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7).

для тебя кажется ошибкой архитектуры, то пока могу посоветовать сходить в сад.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215965
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ,

МСУ Безопасность (CanView, CanEdit, CanDelete, Can..., Can..., ...) намного сложнее и замороченнее, чем User.IsInRole.

не забудем добавить: «.. у МСУ», ибо этот товарищь обажает все усложнять, так он выглядит гораздо статней, умнее. и нужнее к слову говоря, ибо никто кроме него в коде не разберется. к любой программе, вышедшей из под рук МСУ требуется обязательное приложение: МСУ. видел я таких. и уволить нельзя, и оставить накладно. пусть болтается себе там в комроке, пишет свой говнокод.
Ты просто бестолочь, которой нечего сказать по теме. Которая не разбирается в предметики. Которая не отвечает на прямые вопросы.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215967
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУВопрос изначально состоит в том, что ты нихрена не понимаешь предметики - и лезешь своим носом в дела, с которыми не имел опыта работать.

Если интересно помыслишь над секурити абстракциями, наследования ролей, наследования правил (пермиссий), управлениями контейнерами групп, динамических ролевых условий (фейков) - посмотри мой старенький проект по кастомизации мембершипа: http://msadmin.codeplex.com

Хотя рано тебе такие вещи давать. Если такая безопасность

...HasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7).

для тебя кажется ошибкой архитектуры, то пока могу посоветовать сходить в сад.

конечно ошибка архитектуры! кто ж так пишет!? какого хрена у тебя роли на секьюрити прописаны жестко в коде? в коде можно оперировать ролями. конкретные права на уровне данных, там же и привязка к ролям. ты же все смешал и называешь это стандартным подходом.

а еще скидываешь неподдерживаемое старье типа http://msadmin.codeplex.com/ — знатнейшее говнокодище. видимо им ты и руководствуешься в разработке )) дергаешь, небось, куски кода?? ))
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215972
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttконечно ошибка архитектуры! кто ж так пишет!? какого хрена у тебя роли на секьюрити прописаны жестко в коде?
Что такое "роли на секьюрити"? А где должны прописываться роли как не в коде?

hVosttв коде можно оперировать ролями. конкретные права на уровне данных, там же и привязка к ролям. ты же все смешал и называешь это стандартным подходом.
Я тебе 10 раз уже сказал, не только ролями. Можно оперировать всем - типами документов, текущей датой, погоде на луне. И на основе этих условий строить секурити конструкции. Этой логикой отруливает специальный класс.

hVosttа еще скидываешь неподдерживаемое старье типа http://msadmin.codeplex.com/ — знатнейшее говнокодище. видимо им ты и руководствуешься в разработке )) дергаешь, небось, куски кода?? ))
Что можно объяснить идиоту? То, что он идиот? Не поверит и запротестует.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215979
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, давай я задам тебе конкретный пример, а ты ответишь, как нужно решать его.

1. В приложении 2 роли, админ и менеджер
2. Справочник продуктов
3. Нужно дать доступ для справочника продуктов (Index) только для админа и менеджера
4. Админу разрешается всё
5. Менеджеру разрешается просматривать только продукты с категориями 1, 2, 3, с датой отгрузки = вчера или сегодня.

Это элементарнейшая безопасность, детский сад просто. Набрал попкорна.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215982
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttГде-то в степи,

вопрос был поднят, вопрос. не может ли обернуться на первый взгляд видимое удобство быстрого доступа к объектам просунутое через базовый контроллер, проблемами в сопровождении, при развитии фреймворка (в будущих версиях MVC 5,6,...), в комплексном тестировании и в командной работе. т.е. в общем и целом. я понимаю, что конкретной задаче конкретное решение, но мы говорим про фреймворк в целом, а фреймворк — это уже само по себе общее решение для огромной группы задач. вот о нем речь и идет. кто мыслит исключительно конкретными задачами, пусть сразу пишет себе полностью собственный фреймворк под свою конкретную задачу и не задает глупых вопросов «давай задачу» в этом топике.Флейм какой-то пошёл. В первом посте топика ничего не сказано про "видимое удобство быстрого доступа к объектам просунутое через базовый контроллер". Что за сферические объекты такие? В будущих версиях MVC контроллер перестанет быть контроллером, перестанет содержать логику обработки действий пользователя, пусть и примитивную? Тогда это будет уже другой MV* шаблон.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215985
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVostt, давай я задам тебе конкретный пример, а ты ответишь, как нужно решать его.Можно я за него:hVosttкто мыслит исключительно конкретными задачами, пусть сразу пишет себе полностью собственный фреймворк под свою конкретную задачу и не задает глупых вопросов
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215988
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAМСУhVostt, давай я задам тебе конкретный пример, а ты ответишь, как нужно решать его.Можно я за него:hVosttкто мыслит исключительно конкретными задачами, пусть сразу пишет себе полностью собственный фреймворк под свою конкретную задачу и не задает глупых вопросов
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38215991
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVostt, разумеется, хотелось бы увидеть реализацию на IActionFilter :)

P.S. Только не говори нам, что опять бизнес требование у меня идиотское и архитектура задачи - говно
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216003
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

Модератор: Похоже, давно тебя не банили. Не хочешь - не отвечай. А хамить-то мемберам зачем?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216017
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМенеджеру разрешается просматривать только продукты с категориями 1, 2, 3

Зачем привязывать роли к конкретным категориям?
В таком случае, добавляю поле в таблицу продуктов, и отмечаю как продукты для менеджера.

Остальное делается в экшене Index, зачем там фильтры или базовый контроллер.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216031
MVC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC
Гость
hVostt
у меня есть мастер страница и много контентных страниц.
на мастере! мне нужно выводить данные из хранилища.
вопрос: как мне сделать подобное, не используя базовый контроллер?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216036
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVostt, давай я задам тебе конкретный пример, а ты ответишь, как нужно решать его.

1. В приложении 2 роли, админ и менеджер
2. Справочник продуктов
3. Нужно дать доступ для справочника продуктов (Index) только для админа и менеджера
4. Админу разрешается всё
5. Менеджеру разрешается просматривать только продукты с категориями 1, 2, 3, с датой отгрузки = вчера или сегодня.

Это элементарнейшая безопасность, детский сад просто. Набрал попкорна.

1. На экшен справочника [Authorize(Roles = "admin,manager")]

2. Во вью рендерить кнопки изменения при User.IsInRole("admin")

3. На экшены изменения [Authorize(Roles = "admin")]

4. Что менеджеру можно просмотривать продукты с категориями и датой, это решается в IProductService.GetProducts(), контроллеру должно быть фиолетово, что сервис отдаст. Что отдаст, то и покажет, сервису виднее что отдавать и по какой логике. Если скажешь что фильтровать по юзерам данные должен контроллер, тогда я тебе сразу скажу, архитектура -- УГ.

5. КАКОЕ это всё имеет отношение к вопросу БАЗОВОГО контроллера??????
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216038
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MVC hVostt
у меня есть мастер страница и много контентных страниц.
на мастере! мне нужно выводить данные из хранилища.
вопрос: как мне сделать подобное, не используя базовый контроллер?

готовь эти данные в глобальном фильтре, суй их во ViewData, который для этого и был предназначен. хочешь «сахара»? добавь нужные экстеншионы к ViewData.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216040
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANA,

я понял уже, что вы зашли чисто поржать )) я говорил о конкретной задаче в начале топика, а? откройте 1-ую страницу, первое сообщение в теме и перечитайте. ну пожалуйста...
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216048
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MVC hVostt
у меня есть мастер страница и много контентных страниц.
на мастере! мне нужно выводить данные из хранилища.
вопрос: как мне сделать подобное, не используя базовый контроллер?

Код: c#
1.
2.
public class MasterPageAttribute : ActionFilterAttribute
{


Код: c#
1.
2.
3.
[MasterPage]
public ActionResult Index()
{
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216055
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

не исключено написание своих фильтров типа Authorize, главное, что этому не место в контроллере. контроллер тем и замечателен, что там содержится минимум кода. в основном вызовы нужных Services и аспекты. еще скажи логику кеширования ты реализуешь в базовом контроллере, чем уже окончательно добьёшь мой мозг.

я прошу кейс, где реализация кастомного базового контроллера будет действительно лучше аспектов и других возможностей фреймворка, давая ощутимые преимущества в архитектуре приложения.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216084
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttskyANA,

я понял уже, что вы зашли чисто поржать )) я говорил о конкретной задаче в начале топика, а? откройте 1-ую страницу, первое сообщение в теме и перечитайте. ну пожалуйста...Читал и отвечал даже на него. И конкретный пример привёл.
И Вы вроде даже согласились, что в предложенном мной примере базовый контроллер имеет смысл.
Но при этом добавили какие-то не понятные мне рассуждения про подсовывания чего-то куда-то. Вы мне можете обяснить, что этим хотели сказать в контексте предложеного мной кейса, или продолжите дальше флеймить с МСУ?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216085
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонЗачем привязывать роли к конкретным категориям?
Роли не привязаны к конкретным категориям, с чего ты взял?

ПарамонВ таком случае, добавляю поле в таблицу продуктов, и отмечаю как продукты для менеджера.
Зачем что-то добавлять в таблицу продуктов и отмечать? Продукты могут быть не только для роли, продукты могут быть, например, для пользователей, чьи покупки > 100 руб. Что, будешь добавлять поле в таблицу продуктов?

ПарамонОстальное делается в экшене Index, зачем там фильтры или базовый контроллер.
Экшен тут вообще идет лесом, ты чего. Всего 100 продуктов. Все они доступны админу, а манагеру - только 50. Причем тут вообще экшен?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216089
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУhVostt, давай я задам тебе конкретный пример, а ты ответишь, как нужно решать его.

1. В приложении 2 роли, админ и менеджер
2. Справочник продуктов
3. Нужно дать доступ для справочника продуктов (Index) только для админа и менеджера
4. Админу разрешается всё
5. Менеджеру разрешается просматривать только продукты с категориями 1, 2, 3, с датой отгрузки = вчера или сегодня.

Это элементарнейшая безопасность, детский сад просто. Набрал попкорна.

1. На экшен справочника [Authorize(Roles = "admin,manager")]

2. Во вью рендерить кнопки изменения при User.IsInRole("admin")

3. На экшены изменения [Authorize(Roles = "admin")]

4. Что менеджеру можно просмотривать продукты с категориями и датой, это решается в IProductService.GetProducts(), контроллеру должно быть фиолетово, что сервис отдаст. Что отдаст, то и покажет, сервису виднее что отдавать и по какой логике. Если скажешь что фильтровать по юзерам данные должен контроллер, тогда я тебе сразу скажу, архитектура -- УГ.

5. КАКОЕ это всё имеет отношение к вопросу БАЗОВОГО контроллера??????

Не торопи коней - идём дальше. Теперь нам нужно показывать все продукты менеджеру (Index), но доступные для редактирования (продукты с категориями 1, 2, 3, с датой отгрузки = вчера или сегодня) подсвечивать. Более того, в карточке продукта (Index/{id}) нам нужно запрещать просмотр, если категория не 1-3 и дата отгрузки <> вчера / сегодня.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216091
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, не исключено написание своих фильтров типа Authorize
Это не нужно, т.к. речь не о Authorize, а о построении UI в разрезе полномочий.

hVosttглавное, что этому не место в контроллере.
А у кого этому место в контроллере? Этим должен заниматься отдельный класс и только он. Базовый контроллер - проводник к этому классу.

hVosttконтроллер тем и замечателен, что там содержится минимум кода. в основном вызовы нужных Services и аспекты. еще скажи логику кеширования ты реализуешь в базовом контроллере, чем уже окончательно добьёшь мой мозг.
У контроллере нет реализации, ты долго будешь тупить?

hVosttя прошу кейс, где реализация кастомного базового контроллера будет действительно лучше аспектов и других возможностей фреймворка, давая ощутимые преимущества в архитектуре приложения.
Я тебе уже достаточно привел примеров, ты просто до них еще не дорос.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216099
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУПарамонЗачем привязывать роли к конкретным категориям?
Роли не привязаны к конкретным категориям, с чего ты взял?

МСУ Менеджеру разрешается просматривать только продукты с категориями 1, 2, 3



МСУЭкшен тут вообще идет лесом, ты чего. Всего 100 продуктов. Все они доступны админу, а манагеру - только 50. Причем тут вообще экшен?
Это примерно то, что имел в виду.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public ActionResult Index()
{
      var data = new ProductsViewModel();

      if(User.IsInRole("Admin"))
         data = repo.GetProductsForAdmin();
      else
         data = repo.GetProductsForManager(); // where isformanger == true && somedate == somevalue

     return View(data);
}


Типа того.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216104
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУНе торопи коней - идём дальше. Теперь нам нужно показывать все продукты менеджеру (Index), но доступные для редактирования (продукты с категориями 1, 2, 3, с датой отгрузки = вчера или сегодня) подсвечивать. Более того, в карточке продукта (Index/{id}) нам нужно запрещать просмотр, если категория не 1-3 и дата отгрузки <> вчера / сегодня.

Если речь идёт о доступе на уровне данных, а не только действий, бизнес-логика знает о ролях и элементах доступа.
Элементы доступа для кейса: "products/index", "products/edit". Входят в роль "manager".

IProductManagerService.GetList() возвращает для каждой записи также элементы доступа к ним для роли пользователя . Контроллер во вью передаёт модель с маркером индикации, в зависимости от элемента доступа, вью подсвечивает записи с соответствующим маркером и дает ссылку на страницу редактирования товара.

IProductManagetService.GetItem() возвращает тоже самое только в одном экземпляре по Id. действие Index/{id} контроллера вызывает вью, информирующую пользователя о том, что доступ запрещен, если нет нужного элемента доступа .

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

сократить расходы на кодинг можно, создав свой фильтр AccessAction(AccessItem = "product/edit"), действующий на событие Executed и перехватывающий вывод Result, если модель не обладает нужным AccessItem. тогда действие контроллера вообще лишается необходимости каких-либо проверок. получает данные и вызывает вью, как будто все все можно.

опят таки, здесь ни в каком месте не нужен базовый контроллер. все решается нужным кастомным фильтром.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216108
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttДайте убедительный довод зачем может понадобиться определять свой базовый контроллер?
Что то я вообще не догоняю об чем речь, так можно переопределять базовый контроллер или нет?
там для всяких фентифлюшек быстрого доступа к чему то, типа как генерации контракта на работу, ленивого кеширования
чего то общего и тд. Конечно речь не идет там расположить весь механизм какой нибудь пиздятины типа вставки удаления модификации данных и отслеживания разрешений. Но быстрый доступ к объекту который отвечает за это матерное слово - почему нет?
Другой вопрос стоит ли создавать такой объект, или просто въебенить через фильтры или еще как - альтернативно хранению его в переопределенном бк., так это к теме топика отношение не имеет, так же как мой жидкий стул, к погоде на ямайке... ???
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216111
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонЭто примерно то, что имел в виду.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public ActionResult Index()
{
      var data = new ProductsViewModel();

      if(User.IsInRole("Admin"))
         data = repo.GetProductsForAdmin();
      else
         data = repo.GetProductsForManager(); // where isformanger == true && somedate == somevalue

     return View(data);
}


Типа того.
Так не делают - это раз (упаришься все роли перечислять для всех вариантов). Во-вторых, как будешь вот такие задачи решать 14146874 ?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216116
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttЕсли речь идёт о доступе на уровне данных, а не только действий, бизнес-логика знает о ролях и элементах доступа.
Элементы доступа для кейса: "products/index", "products/edit". Входят в роль "manager".
Идет речь о любых уровнях - и данных и действий. "Бизнес-логика" - что за логика и где она должна размещаться?

hVosttIProductManagerService.GetList() возвращает для каждой записи также элементы доступа к ним для роли пользователя . Контроллер во вью передаёт модель с маркером индикации, в зависимости от элемента доступа, вью подсвечивает записи с соответствующим маркером и дает ссылку на страницу редактирования товара.
Логика выставления этого маркера должна быть в контроллере? Ты перечишь сам себе, сначала в DI, потом в фильтре, потом в глобальном синглтоне. А теперь - в контроллере? Молодец, чё.

hVosttIProductManagetService.GetItem() возвращает тоже самое только в одном экземпляре по Id. действие Index/{id} контроллера вызывает вью, информирующую пользователя о том, что доступ запрещен, если нет нужного элемента доступа .
А причем тут "доступ запрещен" и "просто нет элемента"?

hVosttконтроллер не должен реализовывать логику доступа к данным ни в каком виде. все, что ему требуется, это информация от сервиса, что можно, а что нельзя делать с полученной информацией.
Ничего не понимаю, то должен, то не должен. Ты определись уже, кто что должен.

hVosttопят таки, здесь ни в каком месте не нужен базовый контроллер. все решается нужным кастомным фильтром.
Десятый раз повторяю, где хранится логика:

...HasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7).

? В фильтре? А как же вью, если для конкретного условия во вью мне нужно добавить / скрыть элемент, подсветить и т.д.?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216117
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиhVosttДайте убедительный довод зачем может понадобиться определять свой базовый контроллер?
Что то я вообще не догоняю об чем речь, так можно переопределять базовый контроллер или нет?
там для всяких фентифлюшек быстрого доступа к чему то, типа как генерации контракта на работу, ленивого кеширования
чего то общего и тд. Конечно речь не идет там расположить весь механизм какой нибудь пиздятины типа вставки удаления модификации данных и отслеживания разрешений. Но быстрый доступ к объекту который отвечает за это матерное слово - почему нет?
Другой вопрос стоит ли создавать такой объект, или просто въебенить через фильтры или еще как - альтернативно хранению его в переопределенном бк., так это к теме топика отношение не имеет, так же как мой жидкий стул, к погоде на ямайке... ???
Он уже сам запутался в показаниях.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216119
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУТак не делают - это раз (упаришься все роли перечислять для всех вариантов). Во-вторых, как будешь вот такие задачи решать
Условия для всех вариантов, описываюся в сервисном слое, не вижу проблемы. (это для примера)
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216123
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонМСУТак не делают - это раз (упаришься все роли перечислять для всех вариантов). Во-вторых, как будешь вот такие задачи решать
Условия для всех вариантов, описываюся в сервисном слое, не вижу проблемы. (это для примера)
Условия для всех вариантов описываются в отдельной песочнице (Security), а в сервисном слове уже используется эта информация. А базовый контроллер - отличное место для размещения экземпляра этой Security.

...HasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7).

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
public class Security
{
    public SecurityUser User { get; set; }

    private bool HasProductView(Product product)
    {
        return
            User.IsAdmin ||  // админ
            (User.IsManager &&  // менеджер
                new[] { 1, 2, 3 }.Contains(product.CategoryId) &&
                (product.ShipmentDate.Date == DateTime.Today || product.ShipmentDate.Date == DateTime.Today.AddDays(-1))
            );
    }

    private IQueryable<Product> AddToProductList(IQueryable<Product> products) // EF Include(Users && Roles)
    {
        return products.Where(админ || (менеджер && ...));
    }
}
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216124
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУА как же вью, если для конкретного условия во вью мне нужно добавить / скрыть элемент, подсветить и т.д.?
Не говори что тянешь все 100 продуктов, чтобы показать 50 из них менеджеру по условию во вью )
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216125
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

в бизнес-логике решать. это не задача контроллера. какие-то действия еще можно разрешать в зависимости от роли. но не в случае с данными. все что должен реализовывать контроллер, это получать данные от M, передавать их на V, получать данные от V и передавать их M. в трансфере решаются проблемы биндинга и валидации, давать доступ к данным или не давать решает М, информируя об этом контроллер, он уже рендерит нужную вью.

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

если уже как было сказано, если база расширяется чисто для удобства доступа к сервисам, то ради бога. никакую архитектурную проблему/задачу это не решает и остается только на совести программиста.

мой вопрос относится только к тому, когда это действительно нужно. прокидывать ссылки на сервисы — можно, но не нужно.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216126
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон, более того, бывают случаи, когда безопасность на уровне коллекции элементов невозможно описать для IQueryable<T>, т.к. запрос не может транслироваться или будет не оптимально / трудозатратно. Поэтому обычно делают IQueryable<T> + HasProductView. Ну понял, о чем, думаю. Это hVostt'у нужно всё по 100 раз пережевывать.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216127
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ new[] { 1, 2, 3 }.Contains(product.CategoryId)
Хардкод категорий улыбнул )
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216128
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонМСУА как же вью, если для конкретного условия во вью мне нужно добавить / скрыть элемент, подсветить и т.д.?
Не говори что тянешь все 100 продуктов, чтобы показать 50 из них менеджеру по условию во вью )
С работой IQueryable не знаком?

Код: c#
1.
IQueryable<Product> AddToProductList(IQueryable<Product> products) 
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216129
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонМСУ new[] { 1, 2, 3 }.Contains(product.CategoryId)
Хардкод категорий улыбнул )
Не принципиально, мы обсуждаем концепцию. Надо - выноси в енумы.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216130
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

я заторчал от этого коммента :)

Конечно речь не идет там расположить весь механизм какой нибудь пиздятины типа вставки удаления модификации данных и отслеживания разрешений. Но быстрый доступ к объекту который отвечает за это матерное слово - почему нет?

конечно можно, ради бога, но нужно ли? решает это какую-то задачу так, что по-другому лучше не сделаешь? пока не вижу достойных примером на эту роль.

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

вы лучше поделитесь своей травой ))
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216134
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, в бизнес-логике решать. это не задача контроллера.
Ты почему ведешь себя как баран у новых ворот? Тебе уже все говорят, что логики в контроллере нет. Ты не понимаешь этого?

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

hVosttкак это можно вынести в абстракцию я уже сказал, делается нужный фильтр-перехватчик и вешается на действие или на контроллер в целом. никакой базовый контроллер в этой схеме секьюрити нафиг не впился.
Я тебе 100 раз повторил - этот вариант не устроит, т.к. UI отстраивается в разрезе полномочий пользователя. 101 раз повторить?

hVosttмой вопрос относится только к тому, когда это действительно нужно. прокидывать ссылки на сервисы — можно, но не нужно.
Значит таки уже можно? Великолепно. А почему не нужно, поведаешь нам?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216136
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУОн уже сам запутался в показаниях.

говори только за себя, плз. не уймешь своё чсв, да? ))
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216137
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУОн уже сам запутался в показаниях.

говори только за себя, плз. не уймешь своё чсв, да? ))

Тебе 100 раз повторишь одно и тоже, и только со 101 ты начинаешь понимать, что тебе пишут.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216138
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУДесятый раз повторяю, где хранится логика:

...HasUserProductView = роль админ || (роль менежер $$ статус == 3) || ((роль вьювер && дата = сегодня) || роль вьювер && категория = 7).

? В фильтре? А как же вью, если для конкретного условия во вью мне нужно добавить / скрыть элемент, подсветить и т.д.?

в бизнес-логике. читать умеешь? или то комменты по диагонале читаешь, увидел слово, вырвал из контекста и достебался с умным видом. очки на нос не лезут? поправь быстрей и прочитай вот это:

логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.
логика доступа к данным хранится в бизнес-логике.


может лучше картинку?

секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа.
секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа.
секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа.
секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа.
секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа.
секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа.
секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа.
секьюрити хранит и управляет взаимосвязью ролей, пользователей и элеметнов доступа.


секьюрити не решает что и кому показывать, разрешать или не разрешать. а если у тебя решает, то мне искренне тебя жаль. серьезно. это уже болезнь в последней стадии, и я не уверен что это лечится.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216139
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttв бизнес-логике. читать умеешь? или то комменты по диагонале читаешь, увидел слово, вырвал из контекста и достебался с умным видом. очки на нос не лезут? поправь быстрей и прочитай вот это:
Логика хранится в логике? Масло масляное. Слушай, ты не только хреновый программист, ты еще и русский язык не знаешь.
Для тех, кто засел в танке - "в бизнес-логике" - это что такое? Может ты во View хранишь свою бизнес логику. Может в контроллере. Может в репозитории. Опять трудности с пониманием прямых понятных вопросов?

hVosttсекьюрити не решает что и кому показывать, разрешать или не разрешать. а если у тебя решает, то мне искренне тебя жаль. серьезно. это уже болезнь в последней стадии, и я не уверен что это лечится.
Где у меня секьюрити что-то решает, покажи пальцем? Ты инопланетянен?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216141
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУhVosttсекьюрити не решает что и кому показывать, разрешать или не разрешать. а если у тебя решает, то мне искренне тебя жаль. серьезно. это уже болезнь в последней стадии, и я не уверен что это лечится.
Где у меня секьюрити что-то решает, покажи пальцем? Ты инопланетянен?
У меня секьюрити отвечает на вопрос, может ли пользователь что-то сделать в рамках своих ролей и бизнес-требований. Всё. А решать может кто угодно - view, controller, dataservice, repository и т.д. Ты код каким местом читаешь, признавайся?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216143
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
модель доступа:

ПОЛЬЗОВАТЕЛЬ 1-* РОЛЬ

РОЛЬ 1-* ЭЛЕМЕНТ-ДОСТУПА

(для особо тяжелых случаев, тяжеловесных систем, странной и хитрой логикой)
ПОЛЬЗОВАТЕЛЬ 1-* ЭЛЕМЕНТ-ДОСТУПА


легенда: 1-* — один-ко-многим


задачи секьюрити:

1) дай мне все роли вот этого пользователя
2) дай мне всех пользователей с этой ролью
3) дай мне все элементы-доступа этой роли / этого пользователя
4) проверь есть ли роль у этого пользователя
5) проверь есть ли элемент-доступа у этой роли / этого пользователя
6........) добавление, изменение сущностей и связей между ними


ВСЁ!


и не надо пришивать к этой стройной самодостаточной логике что-то еще. проверку данных например. или 500 методов типа:

- можно ли пользователю записать продукт
- можно ли пользователю прочитать продукт
- можно ли пользователю отобразить продукт в списке
.......
потому что это неподерживаемое говнокодище. самое днище уродливых неподдерживаемых архитектур.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216144
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУУ меня секьюрити отвечает на вопрос, может ли пользователь что-то сделать в рамках своих ролей и бизнес-требований. Всё. А решать может кто угодно - view, controller, dataservice, repository и т.д. Ты код каким местом читаешь, признавайся?

найди сам способ себе навредить. стена, мотыга, бензин, спички. с какого перепуга View и контроллер что-то решают? почему? why? ну я понимаю, что у тебя они решают. но зачееееееем???? кто позволил, блин!?
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216149
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttзадачи секьюрити:

1) дай мне все роли вот этого пользователя
2) дай мне всех пользователей с этой ролью
3) дай мне все элементы-доступа этой роли / этого пользователя
4) проверь есть ли роль у этого пользователя
5) проверь есть ли элемент-доступа у этой роли / этого пользователя
6........) добавление, изменение сущностей и связей между ними


ВСЁ!


и не надо пришивать к этой стройной самодостаточной логике что-то еще. проверку данных например. или 500 методов типа:

- можно ли пользователю записать продукт
- можно ли пользователю прочитать продукт
- можно ли пользователю отобразить продукт в списке
.......
потому что это неподерживаемое говнокодище. самое днище уродливых неподдерживаемых архитектур.

Неподерживаемое говнокодище в воспаленном воображении, а не в требованиях. Задача секьюрити на порядки шире и мощнее, чем ты тут из 6 пунктов расписал бред сивой кобылы. Требование бизнеса - в соотв. с ФЗ "О персональных данных" показывать такие-то колонки для таких-то ролей. Банальная задача, в которой по роли отстраивается UI. Это неподдерживаемая архитектура? Еще пример: для таких-то ролей давать на редактирование документы со статусом 3 и 5, при условии, что год дата документа - прошлогодний, а так же по документу были высланы в конкретные инстанции уведомления. Просто в силу своего скромного опыта ты не представляешь себе, какие сложные конструкции в разрезе секьюрити могут быть у бизнеса. За гавнокодище и уродливую архитектуру тебя просто уволят нахрен как ненужную бестолочь, которая много говорит, а сделать не может.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216152
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУУ меня секьюрити отвечает на вопрос, может ли пользователь что-то сделать в рамках своих ролей и бизнес-требований. Всё. А решать может кто угодно - view, controller, dataservice, repository и т.д. Ты код каким местом читаешь, признавайся?

найди сам способ себе навредить. стена, мотыга, бензин, спички. с какого перепуга View и контроллер что-то решают? почему? why? ну я понимаю, что у тебя они решают. но зачееееееем???? кто позволил, блин!?

Ты в вакууме? Я тебе 100500 раз твержу о том, что экшенфильтр не подойдет, т.к. вью должна отстраивать UI в разрезе секурити. И тут ты просыпаешься и задаешь этот идиотский вопрос. Жесть.

Отечаю на вопрос: razor в зависимости от привилегий юзера (для бронированных, привилегия - это не только роль) строит UI. Такой привилегии - такие колонки, такой привилегии - такие кнопки, такой привилегии - вот такую возможность.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216154
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУСлушай, ты не только хреновый программист, ты еще и русский язык не знаешь.

я нигде не говорил, что обалдеть какое талантище и гуру в программировании. на эту роль у нас тянешь только ты. все что произнес МСУ не подлежит обсуждению. это истина в последней инстанции.

попросил привести пример, когда базовый контроллер действительно решает какую-то задачу, которая не решается IDR/DI и аспектами. обеспечивания мастер-страниц данными? глобальный фильтр лучше подходит для этой роли. прокидывание ссылок на сервисы? вообще какая-то хрень.

вместо конкретного примера мы рассуждаем о том, как реализоваывать секьюрити и доступ к данным. при чем тут базовый контроллер? может на самом деле, ты к этому ведешь? давай сразу с конца? не будем заходить из далека. обещаю, что если увижу убедительный пример, соглашусь, что ты прав и спорить не буду.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216155
MVC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC
Гость
авторготовь эти данные в глобальном фильтре, суй их во ViewData
14147102 - поржал!!!
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public class BaseController : Controller
{
  public BaseController()
  {
    List<string> manufacturers = new List<string>();
    manufacturers.Add("Ford");
    manufacturers.Add("Toyota");
    manufacturers.Add("Chevy");
    manufacturers.Add("Dodge");
    manufacturers.Add("Nissan");
    manufacturers.Add("Mazda");
    manufacturers.Add("Audi");

    ViewData["manufacturers"] = manufacturers;
  }
}

public class HomeController : BaseController


как бэ всё!

ИМХО спорящие тут о существовании жизни на марсе (её отсутствии!) вообще слабо представляют, что происходит за кулисами MVC в целом (ASP.NET MVC FW в частности)!!!

14147347 +100500!!!
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216157
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MVC,

бред. я добавлю один глобальный фильтр. а ты будешь каждый раз проверять не забыл ли ты отнаследоваться от своей базы.
утонченный мазохист.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216158
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttя нигде не говорил, что обалдеть какое талантище и гуру в программировании.
Правильно, зачем ламеру такие регалии.

hVosttна эту роль у нас тянешь только ты. все что произнес МСУ не подлежит обсуждению. это истина в последней инстанции.
Истина только в библии. А если ты с моими аргументами не согласен - выскажи свои аргументы против. Но по ты не то что аргументы, ты понять вопроса толком не можешь. Тебе люди конкретные примеры дают, ты несешь какую-то дурь и свиливаешь в сторону. Как можно общаться с таким инопланетянином?

hVosttпопросил привести пример, когда базовый контроллер действительно решает какую-то задачу, которая не решается IDR/DI и аспектами. обеспечивания мастер-страниц данными? глобальный фильтр лучше подходит для этой роли. прокидывание ссылок на сервисы? вообще какая-то хрень.
Тебе привели примеры. Ты тычешь своими DI, которые как кобыле пятое колесо. Десятый раз говорю - экшен фильтр не решит задач секурити для отстраивания UI. Ты не понимаешь русского языка?

hVosttвместо конкретного примера мы рассуждаем о том, как реализоваывать секьюрити и доступ к данным. при чем тут базовый контроллер? может на самом деле, ты к этому ведешь? давай сразу с конца? не будем заходить из далека. обещаю, что если увижу убедительный пример, соглашусь, что ты прав и спорить не буду.
Убей себя.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216160
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

а за пропихивание данных в конструкторе линеечкой и по-больней.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216162
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

МСУТебе привели примеры. Ты тычешь своими DI, которые как кобыле пятое колесо. Десятый раз говорю - экшен фильтр не решит задач секурити для отстраивания UI. Ты не понимаешь русского языка?

я пока не увидел реализацию задачи секурити для отстраивания UI, решенную на базовом контроллере. пока только жалкое блеяние в виде умных слов. пример в студию! и я тебя удивлю как это легко решится без БК. но если боишься слажать, можешь просто промолчать. я пойму, не переживай.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216168
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MVCавторготовь эти данные в глобальном фильтре, суй их во ViewData
14147102 - поржал!!!
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
public class BaseController : Controller
{
  public BaseController()
  {
    List<string> manufacturers = new List<string>();
    manufacturers.Add("Ford");
    manufacturers.Add("Toyota");
    manufacturers.Add("Chevy");
    manufacturers.Add("Dodge");
    manufacturers.Add("Nissan");
    manufacturers.Add("Mazda");
    manufacturers.Add("Audi");

    ViewData["manufacturers"] = manufacturers;
  }
}

public class HomeController : BaseController


как бэ всё!

ИМХО спорящие тут о существовании жизни на марсе (её отсутствии!) вообще слабо представляют, что происходит за кулисами MVC в целом (ASP.NET MVC FW в частности)!!!

14147347 +100500!!!

На чем поржал, над своим непонимаение фильтров? Сам себе плюсы ставишь? )
ViewData выбрось на помойку.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216172
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имхо, вся тема - троллинг чистой воды, и не несет смысловой нагрузки
14147510
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216175
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttМСУ, а за пропихивание данных в конструкторе линеечкой и по-больней.
О как. А с каких это пор пропихивание данных в конструкторе стало запрещено? Я смотрю, у тебя одни запреты. Аргументы будут? Или опять пошуршать зашел?

hVosttя пока не увидел реализацию задачи секурити для отстраивания UI, решенную на базовом контроллере.
Я и не сомневался, что тебе нужно всё разжевывать и показывать.

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
@model ProductModel

@{ var security = (ViewContext.Controller as BaseController).Security; }

@using (Html.BeginForm())
{
    // ...  
 
    @if (security.HasProductDelete(model.Product))
    {
        <input type="submit" name="name" value="delete" />
    }
}



Можно экземпляр Security и в ProductModel вбить в контроллере, не принципиально.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216176
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

только вашей проницательности этой теме и не хватало :D
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216180
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Флейм, флейм, флейм!
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216181
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Серж, пора закрывать, или чистить.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216186
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУМожно экземпляр Security и в ProductModel вбить в контроллере, не принципиально.

Разумеется, все что должно быть во вью это:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
@model ProductModel

@using (Html.BeginForm())
{
    @if (Model.ShowDelete)
    {
        <input type="submit" name="name" value="delete" />
    }
}
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216190
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
@model ProductModel

@{ var security = (ViewContext.Controller as BaseController).Security; }

@using (Html.BeginForm())
{
    // ...  
 
    @if (security.HasProductDelete(model.Product))
    {
        <input type="submit" name="name" value="delete" />
    }
}



Узри же:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
	public class SecurityFilter: IActionFilter
	{
		public void OnActionExecuting(ActionExecutingContext filterContext)
		{
			// ... 

			filterContext.Controller.ViewData["Security"] = new MySecurity();

			// ИЛИ ЛУЧШЕ ТАК

			filterContext.Controller.ViewData["Security"] = DependencyResolver.Current.GetService<ISecurity>();

			// ...
		}

		public void OnActionExecuted(ActionExecutedContext filterContext)
		{
		}
	}



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
	public class FilterConfig
	{
		public static void RegisterGlobalFilters(GlobalFilterCollection filters)
		{
			// ...
			filters.Add(new SecurityFilter());
		}
	}



Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
@model ProductModel

@{ var security = (ISecurity)ViewData["Security"]; }

@using (Html.BeginForm())
{
    // ...  
 
    @if (security.HasProductDelete(model.Product))
    {
        <input type="submit" name="name" value="delete" />
    }
}



все, МСУ, давай досвидания . не нужно больше от тебя никаких примеров. вью лезет в контроллер, охренеть просто архитектура. все компоненты друг о друге знают, ппц. так что не надо себя убивать. живи. тебя из серьезной конторы за такое попросту погонят взашей. слишком много умных слов + чрезмерно раздутое ЧСВ, а в итоге сплошное дилетанство, ничего за умными словами не стоит.

можешь разродиться обезьянками, попробовать восстановить свое пошатнувшееся достоинство, но я от тебя уже ничего умного не жду, кроме потока изощренного хамства. я просил пример, убедительно доказывающий необходимость базового контроллера, а ты прислал унылое говнище, которое просто должно быть стыдно демонстрировать.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216202
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУ,

и последнее

авторО как. А с каких это пор пропихивание данных в конструкторе стало запрещено? Я смотрю, у тебя одни запреты. Аргументы будут? Или опять пошуршать зашел?

с тех, что в конструкторе ты конструируешь объект, и не делаешь ничего другого. НИЧЕГО. это конструктор, башка твоя тупая. почитай что такое конструктор, ё-ж-ты-моё... народ, как вы его еще терпите????

для этих целей есть Controller.Initialize Method

шуруй короче учить матчасть. что не кусок кода, то косяк. устал уже с тобой препираться.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216203
MVC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC
Гость
авторНа чем поржал, над своим непонимаение фильтров? Сам себе плюсы ставишь? )
ViewData выбрось на помойку.
а их (фильтры) нужно понимать?! ;)))
любой метод контроллера вызванный с фильтром создаст ещё один класс - класс фильтра! (о боже сколько же их у тебя о великий БГ - дай нам компы помощнее!)
Код: c#
1.
2.
public class MasterPageAttribute : ActionFilterAttribute
{}


Код: c#
1.
2.
3.
[MasterPage]
public ActionResult Index()
{}


===
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class Home : Controller
{
private ActionFilterAttribute _MasterPage;
public Home()
  {
    _MasterPage = new MasterPageAttribute()
  }
public ActionResult Index()
{
_MasterPage.сделайЧтоНибудь();
}
}


всё это будет приправлено какой-нибудь скоростной рефлексией и хз чем ещё!!!

и ты мне предлагаешь это быдлорешение в качестве альтернативы ООП наследования ?!
ПыСы: ViewData - можно назвать супердата (или как тебе угодно) - по сути - это коллекция ключ-значение, как и все последующие конгениальные решения, отменяющие её (коллекцию ключ-значение)!!!
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216207
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MVC,

авторлюбой метод контроллера вызванный с фильтром создаст ещё один класс - класс фильтра! (о боже сколько же их у тебя о великий БГ - дай нам компы помощнее!)

а здесь вообще занавес........... ИДИ УЧИ МАТЧАСТЬ!!!!!!!! УЧИ МАТЧАСТЬ! ТЫ НЕПРАВ )))))))

ааааааааааааааааа... закрывайте топик плииииз.. тут слишком много ГЕНИЯ МСУ.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216208
MVC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC
Гость
автора здесь вообще занавес........... ИДИ УЧИ МАТЧАСТЬ!!!!!!!! УЧИ МАТЧАСТЬ! ТЫ НЕПРАВ )))))))
а ты попробуй стукнуться головой в монитор - оно всё и погаснет!!! ;)
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216212
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MVC,

ты несешь ---ню. откровенно незнаешь что такое фильтры и как они работают. да что уж там, не знаешь как вообще работают атрибуты. "метод контроллера вызванный с фильтром создаст ещё один класс - класс фильтра" . эт ж надо так тупануть.
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216213
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MVCи ты мне предлагаешь это быдлорешение в качестве альтернативы ООП!

Если ты уже почитал пару букварей на тему ООП, то должен был понять, что сама конструкция контроллера, это больше процедурный подход )
MVCViewData - можно назвать супердата (или как тебе угодно) - по сути - это коллекция ключ-значение, как и все последующие конгениальные решения, отменяющие её (коллекцию ключ-значение)!!!
Копай в сторону типизированых вью, ты ведь про ООП там что то заливать начал :)
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216226
MVC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC
Гость
14147644

мухаха!!! в .NET заговорили про процедурный подход?!
ну давай - режь правду-матку - человек, прочитавший три книги по ООП!!!
чё там с контроллером и "больше процедурным подходом" (C)?
авторКопай в сторону типизированых вью, ты ведь про ООП там что то заливать начал :)
любую коллекцию можно прочитать рекурсивно! для этого не нужно магии в виде TYPED!!!

ИМХО правильно вам БГ мозг проливает!!! пока есть вы, остальным них... не страшно (PHP, ROR and etc.)
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216242
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MVCну давай - режь правду-матку - человек, прочитавший три книги по ООП!!!

Зачем мне бисером то метать?

MVCлюбую коллекцию можно прочитать рекурсивно! для этого не нужно магии в виде TYPED!!!
ИМХО правильно вам БГ мозг проливает!!! пока есть вы, остальным них... не страшно (PHP, ROR and etc.)

Пытаюсь найти связь между - "Магия в виде TYPED" и "рекурсивное чтение" :)
Холиварить на тему скриптовых языков лениво )
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216266
MVC
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MVC
Гость
...
Рейтинг: 0 / 0
[MVC] Базовый контроллер
    #38216271
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAСерж, пора закрывать, или чистить.
Фиг его знает. Похоже, всех закрывать нужно.
Короче, просто закрываю топик.
...
Рейтинг: 0 / 0
128 сообщений из 128, показаны все 6 страниц
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / [MVC] Базовый контроллер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]