Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КУ меня это решение работает уже больше 10-и лет, ещё со времён C++ Builder. И пофиг мне на эстетические чувства каких-то там теоретиков. Я уже сказал, я тебе переубеждать ни в чём не собираюсь. Поверь, я и не такой кошмар видел. Вообще это мудацкий менталитет. Все жалуются в России, что дороги УГ, но как только поциент попадает в контору, занимающейся укладкой дорог, то продолжает делать говно. Это вообще не лечится чтоли? Можешь делать как хочешь, лично мне пофиг. Но у нас ты бы точно не задержался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:16 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей Кcodearticles.ruпропущено... Запрос в БД пойдет из пост-контроллера (возможен аякс). Причем тут модель?Да я про модель в другом понимании. Ладно, проехали. У нас MVC :) Давай, чтобы не путаться, называть моделью (ну или хотя бы моделью представления) то, что биндится на вью. Тогда будет понимание. ErrorPage.cshtml Код: html 1. 2. 3. 4. 5. 6. В данном случае в терминологии MVC модель - это класс ErrorModel. Можно еще её назвать вью моделью, тоже понятно всем будет. А ErrorPage.cshtml (не важно, отрендеренный или нет) - это представление. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:17 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КИз непонятого... Нужен список конкретных негативных эффектов. Что за глупый вопрос? Возьмём того же многострадального пользователя. Очень часто вместо реального удаления записи используется поле с признаком удаления. Удалили пользователя с логином "mefazavr", значит логин должен освободиться. При наличии уникального индекса, логин останется "занятым".Если у меня при удалении пользователя он физически удаляется, если ссылочная целостность позволит, почему бы мне этим не воспользоваться. Впрочем, поле "заблокирован" в пользователях есть, и я не хочу, чтобы был добавлен пользователь, одноимённый заблокированному пользователю. hVosttЕсли бы у тебя был опытОткуда? 14 лет стажа коту под хвост... hVostt... ты бы такие глупости бы не спрашивал.Разве я что-то спрашивал? Мне нужно обоснование твоей точки зрения, не более того. hVosttНикогда целостность БД не используется для валидации бизнес-данных. Никогда. Только в рядах совсем уж начинающих сопливых новичков. Но это обычно с опытом проходит.Ты живёшь в каком-то своём непонятном мире. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:19 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... В этом случае используется это . Код: c# 1. 2. 3. 4. 5. 6. О как. А скрипт создания индекса как оформлен?Ну как обычно: create index IX_sec_users_UserName... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:20 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruАлексей КНу как ты без запроса к БД определишь уникальность введённого значения? Запрос в БД пойдет из пост-контроллера (возможен аякс). Причем тут модель? skyANAcodearticles.ru, ну то есть отдельный класс, по экземпляру которого будет создан профиль пользователя. Проверку уникальности логина ты кстати не реализовал. Но не в этом суть. Я тебе идею написал, а не реализацию конкретной задачи. skyANAТеперь представь, что 100500 профилей пользователей прилетают из сторонней системы и их тоже нужно проверить, но процедуру регистрации проводить не надо, пользователи уже прошли регистрацию в сторонней системе. Надо просто проверить и положить в базу. Если в процессе участвуют n-систем, необходим единый шлюз. Например, REST сервис. В методе валидации модели (или через ремоут атрибут) у тебя будет на лету дергаться сервис, который будет делать проверку. В чем проблема?Код покажи. А то сначала ты предлагаешь базу дёргать аяксом, а потом тут же предлагаешь в модели дёргать сервис :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:23 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КОткуда? 14 лет стажа коту под хвост... НЕ важно сколько времени ты провёл в столовой, важно сколько пирожков ты успел съесть. Видимо тебе твои 14 лет "стажа" не дали ничего. Уровень младшего джуниора. Алексей КЕсли у меня при удалении пользователя он физически удаляется, если ссылочная целостность позволит, почему бы мне этим не воспользоваться. Впрочем, поле "заблокирован" в пользователях есть, и я не хочу, чтобы был добавлен пользователь, одноимённый заблокированному пользователю. Ты как обычно путаешь. Понятия "заблокирован" и "удалён" -- совершенно разные. Если заблокирован, то да, логин этого пользователя должен быть занят. Но если пользователь удалён, то логин должен быть свободен. В крупных серьёзных системах записи обычно только помечаются удалёнными, но никогда не удаляются физически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:23 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruАлексей Кпропущено... Да я про модель в другом понимании. Ладно, проехали. У нас MVC :) Давай, чтобы не путаться, называть моделью (ну или хотя бы моделью представления) то, что биндится на вью. Тогда будет понимание. ErrorPage.cshtml Код: html 1. 2. 3. 4. 5. 6. В данном случае в терминологии MVC модель - это класс ErrorModel. Можно еще её назвать вью моделью, тоже понятно всем будет. А ErrorPage.cshtml (не важно, отрендеренный или нет) - это представление.Ок. :-) Тогда я говорил, наверное, про репозитарий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:23 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
ВалидацияПри проектировании стратегии валидации руководствуйтесь следующими рекомендациями: Проверяйте все вводимые данные и параметры методов в бизнес-слое, даже если проверка ввода выполняется в слое представления. Обеспечьте централизованный подход к валидации, чтобы обеспечить наилучшие условия для тестирования и повторного использования. Ограничивайте, отклоняйте и очищайте пользовательский ввод. Иначе говоря, предполагайте, что весь пользовательский ввод является злонамеренным. Проводите проверку длины, диапазона, формата и типа вводимых данных. Еще раз. Какие нах исключения, братья? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:24 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... О как. А скрипт создания индекса как оформлен?Ну как обычно: create index IX_sec_users_UserName... То есть лежит где-то в виде sql-файла? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:26 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttТы как обычно путаешь. Понятия "заблокирован" и "удалён" -- совершенно разные. Если заблокирован, то да, логин этого пользователя должен быть занят. Но если пользователь удалён, то логин должен быть свободен. В крупных серьёзных системах записи обычно только помечаются удалёнными, но никогда не удаляются физически.В "крупных серьёзных системах" ты и так ничего не сможешь удалить из-за ссылочной целостности. А ещё в "крупных-серьёзных системах" оперативные данные хранятся на глубину юридического срока давности, потому что больше не требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:28 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruДавай, чтобы не путаться, называть моделью (ну или хотя бы моделью представления) то, что биндится на вью.О как. А в случае, когда твой сервис принимает данные из сторонней системы, то что такое модель и как на дёргает сервис? Ведь замкнутый круг получается. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:28 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Ну как обычно: create index IX_sec_users_UserName... То есть лежит где-то в виде sql-файла?Зависит от того, на каком этапе создан индекс. При развёртывании мы отдаём файлы пустой БД, дальнейшие обновления скриптами. В общем, мы следим за именами индексов, если ты об этом. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:30 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAКод покажи. Не покажу. skyANAА то сначала ты предлагаешь базу дёргать аяксом, а потом тут же предлагаешь в модели дёргать сервис :) А что не понятно? Ввёл данные в UI, нажимаешь кнопку сохранить, пошел пост запрос формы, данные смапились в модель, модель упала в метод контроллера, контроллер опросил ModelState.IsValid, дернулся автоматом IValidatableObject.Validate, в реализации метода опросили ValidationContext, дернули единый шлюз - REST сервис проверки данных, сервис нам сказал false, мы разозлились и выплюнули yield return new ValidationResult("упс"), контроллер не прошел в итоге проверку на ModelState.IsValid и завернул нам дулю с маком. Какие сложности? Проблема, как пропихнуть в модель инстанс REST сервиса? Ну это в детском саде объяснят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:30 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruВалидацияПри проектировании стратегии валидации руководствуйтесь следующими рекомендациями: Проверяйте все вводимые данные и параметры методов в бизнес-слое, даже если проверка ввода выполняется в слое представления. Обеспечьте централизованный подход к валидации, чтобы обеспечить наилучшие условия для тестирования и повторного использования. Ограничивайте, отклоняйте и очищайте пользовательский ввод. Иначе говоря, предполагайте, что весь пользовательский ввод является злонамеренным. Проводите проверку длины, диапазона, формата и типа вводимых данных. Еще раз. Какие нах исключения, братья? Опять не читал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:31 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAКод покажи. Не покажу.Зануда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:31 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruДавай, чтобы не путаться, называть моделью (ну или хотя бы моделью представления) то, что биндится на вью.О как. А в случае, когда твой сервис принимает данные из сторонней системы, то что такое модель и как на дёргает сервис? Ведь замкнутый круг получается. :) Мы сейчас говорим о MVC приложении. Никаких сервисов нету. Круг остается быть кругом. Если говорим "модель" в терминологии какого-то сервиса, это будет совсем другое. Не нужно мешать в навозную кучу мух, котлеты и жопу и пытаться едино называть всё это мясом. Мол, вот это мясо не работает. А какое мясо? Муха, котлета или задница. Так мы друг друга не поймемю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:33 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAКод покажи. Не покажу. skyANAА то сначала ты предлагаешь базу дёргать аяксом, а потом тут же предлагаешь в модели дёргать сервис :) А что не понятно? Ввёл данные в UI, нажимаешь кнопку сохранить, пошел пост запрос формы, данные смапились в модель, модель упала в метод контроллера, контроллер опросил ModelState.IsValid, дернулся автоматом IValidatableObject.Validate, в реализации метода опросили ValidationContext, дернули единый шлюз - REST сервис проверки данных, сервис нам сказал false, мы разозлились и выплюнули yield return new ValidationResult("упс"), контроллер не прошел в итоге проверку на ModelState.IsValid и завернул нам дулю с маком. Какие сложности? Проблема, как пропихнуть в модель инстанс REST сервиса? Ну это в детском саде объяснят 1. Когда тебя Алексей спросил, а где будет запрос в БД, ты придумал что он будет из пост-контроллера аяксом делаться. Когда же вместо прямого доступа к БД понадобилось через REST сервис работать, то появился второй запрос ещё и в модели. Нахуа? :) 2. Ну и выходит, что валидация-то на самом деле реализована на стороне сервиса, а не через IValidatableObject.Validate. И при валидации пачки данных прилетевших в REST сервис от сторонней системы, она по другому осуществляется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:41 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAпропущено... О как. А в случае, когда твой сервис принимает данные из сторонней системы, то что такое модель и как на дёргает сервис? Ведь замкнутый круг получается. :) Мы сейчас говорим о MVC приложении. Никаких сервисов нету. Круг остается быть кругом. Если говорим "модель" в терминологии какого-то сервиса, это будет совсем другое. Не нужно мешать в навозную кучу мух, котлеты и жопу и пытаться едино называть всё это мясом. Мол, вот это мясо не работает. А какое мясо? Муха, котлета или задница. Так мы друг друга не поймемюНе валяй дурака. В моём примере ( 16680200 ) есть десктоп и есть сервис. А ты теперь хитро сменил контекст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:45 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Хотя ладно, добавим ещё и MVC приложение, это только подтверждает мои рассуждения о необходимости инжектить различную реализацию валидации в различные места. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:49 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANA1. Когда тебя Алексей спросил, а где будет запрос в БД, ты придумал что он будет из пост-контроллера аяксом делаться. Когда же вместо прямого доступа к БД понадобилось через REST сервис работать, то появился второй запрос ещё и в модели. Нахуа? :) 2. Ну и выходит, что валидация-то на самом деле реализована на стороне сервиса, а не через IValidatableObject.Validate. И при валидации пачки данных прилетевших в REST сервис от сторонней системы, она по другому осуществляется. 1. Я говорил, что аякс возможет, читай внимательнее. Какая тебе разница, как я пошлю тебе запрос с данными в контроллер, постом формы или аяксом? Начинай уже думать что ли... 2. Валидация реализована только в IValidatableObject.Validate. Именно этот метод ответит на все вопросы. А что внутри его, не суть важно. Ты обрисовал пример, когда тебе нужна валидация и другим системам - на что я тебе предложил обобщить валидацию в едином сервисе. Это не обязательно должен быть сервис, это может быть всё что угодно, хранимая процедура, DLL, почтовый голубь. В чем непонимание? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:53 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruпропущено... Мы сейчас говорим о MVC приложении. Никаких сервисов нету. Круг остается быть кругом. Если говорим "модель" в терминологии какого-то сервиса, это будет совсем другое. Не нужно мешать в навозную кучу мух, котлеты и жопу и пытаться едино называть всё это мясом. Мол, вот это мясо не работает. А какое мясо? Муха, котлета или задница. Так мы друг друга не поймемюНе валяй дурака. В моём примере ( 16680200 ) есть десктоп и есть сервис. А ты теперь хитро сменил контекст. Начинай уже думать. Если говоришь слово "модель", уточняй контексты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:53 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей Кcodearticles.ruИсключение - это серьезный сбой программы, а не просто какая-то нотификация из недр BL и прочих слоёв. Нотификации нужно получать через результаты методов.Чё опять? Будем действовать как в Win API: getlasterror, hresult и всё такое? Сделать специальный InfoException для прикладных ошибок не лучше? Во все времена делалось именно так. codearticles.ruИсключения нужно получать глобально, хотя бы уж через базовый контроллер...Лучше написать фильтр, и присобачить его на соответствующем уровне. согласен с Алексей К. исключения не более чем многоуровневый ретурн. Делаем прикладной MyException и кидаем его. В соответствующих местах ловим. А серьезный сбой - это баг или полный фатал. Тут уже ничего не поможет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:57 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAпропущено... Не валяй дурака. В моём примере ( 16680200 ) есть десктоп и есть сервис. А ты теперь хитро сменил контекст. Начинай уже думать. Если говоришь слово "модель", уточняй контексты.Слабенькая отмаза. Это как ты читал пример, что представил себе View Model вместо Domain Model и MVC приложение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:59 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
kmawАлексей Кпропущено... Чё опять? Будем действовать как в Win API: getlasterror, hresult и всё такое? Сделать специальный InfoException для прикладных ошибок не лучше? Во все времена делалось именно так. пропущено... Лучше написать фильтр, и присобачить его на соответствующем уровне. согласен с Алексей К. исключения не более чем многоуровневый ретурн. Делаем прикладной MyException и кидаем его. В соответствующих местах ловим. А серьезный сбой - это баг или полный фатал. Тут уже ничего не поможетА конкретнее? В каких случаях делаем, а в каких нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 15:00 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANA1. Когда тебя Алексей спросил, а где будет запрос в БД, ты придумал что он будет из пост-контроллера аяксом делаться. Когда же вместо прямого доступа к БД понадобилось через REST сервис работать, то появился второй запрос ещё и в модели. Нахуа? :) 2. Ну и выходит, что валидация-то на самом деле реализована на стороне сервиса, а не через IValidatableObject.Validate. И при валидации пачки данных прилетевших в REST сервис от сторонней системы, она по другому осуществляется. 1. Я говорил, что аякс возможет, читай внимательнее. Какая тебе разница, как я пошлю тебе запрос с данными в контроллер, постом формы или аяксом? Начинай уже думать что ли... 2. Валидация реализована только в IValidatableObject.Validate. Именно этот метод ответит на все вопросы. А что внутри его, не суть важно. Ты обрисовал пример, когда тебе нужна валидация и другим системам - на что я тебе предложил обобщить валидацию в едином сервисе. Это не обязательно должен быть сервис, это может быть всё что угодно, хранимая процедура, DLL, почтовый голубь. В чем непонимание?Всё, мне просто смешно уже с тебя. Напиши реальный проект, а потом приходи с советами. Аяксом он собрался опрашивать единый метод IValidatableObject.Validate. У тебя пользователь вводит логин, остальные поля в этот момент ещё пустые, подумай над этим. А пункт 2 в очередной раз подтверждает мои размышления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 15:06 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=38771734&tid=1356943]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
43ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
80ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 389ms |

| 0 / 0 |
