Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Обрабатываю исключение контроллера в самом контроллере: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Пока отлаживал в студии - все нормально, необходимые исключения перехватывались, на клиента возвращался код 200. Выложил на хостинг - стал возвращаться код 500. Подумав, добавил в обработчик строку: Код: c# 1. заработало и на хостинге. То есть проблема решена, но хотелось бы понять, отчего разное поведение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 12:21 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Shocker.ProОбрабатываю исключение контроллера в самом контроллере Плохая практика. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 12:37 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Shocker.ProТо есть проблема решена, но хотелось бы понять, отчего разное поведение?Разная версия IIS? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 12:53 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Shocker.Proхотелось бы понять, отчего разное поведение? Потому что веб-сервер используемый при отладке и полноценный IIS это две разных вещи. Shocker.ProПодумав, добавил в обработчик строку: Код: c# 1. Это плохая идея т.к. ошибки будут индексироваться поисковиками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 13:02 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
bazileЭто плохая идея т.к. ошибки будут индексироваться поисковиками.не будут - это ответ на аякс-запрос. bazileПотому что веб-сервер используемый при отладке и полноценный IIS это две разных вещи.это-то я догадался, но что именно влияет? По моему пониманию, это вообще не должно было выйти за пределы MVC-шной и моей dll-ки и IIS-у должен быть отдан только готовый statuscode codearticles.ruПлохая практика.Почему? Исключения генерятся на различных уровнях, из репозитория, из BL, самим контроллером. Некоторое количество известных ситуаций обрабатывает контроллер и выдает пользователю более информативное сообщение, чем 500. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 13:19 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Shocker.ProПочему? Исключения генерятся на различных уровнях, из репозитория, из BL, самим контроллером. Некоторое количество известных ситуаций обрабатывает контроллер и выдает пользователю более информативное сообщение, чем 500. Исключение - это серьезный сбой программы, а не просто какая-то нотификация из недр BL и прочих слоёв. Нотификации нужно получать через результаты методов. Исключения нужно получать глобально, хотя бы уж через базовый контроллер, от которого наследуются остальные контроллеры. Хотя бы что-то типа того: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 13:25 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, где у себя на сайте 404 перехватываешь? Чё-то у меня путь с точками нифига не попадает в application error в global.asax, а другие 404 нормал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 13:31 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruИсключение - это серьезный сбой программы, а не просто какая-то нотификация из недр BL и прочих слоёв. Нотификации нужно получать через результаты методов.Чё опять? Будем действовать как в Win API: getlasterror, hresult и всё такое? Сделать специальный InfoException для прикладных ошибок не лучше? Во все времена делалось именно так. codearticles.ruИсключения нужно получать глобально, хотя бы уж через базовый контроллер...Лучше написать фильтр, и присобачить его на соответствующем уровне. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 13:31 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
st_stcodearticles.ru, где у себя на сайте 404 перехватываешь? Чё-то у меня путь с точками нифига не попадает в application error в global.asax, а другие 404 нормал. http://codearticles.ru/articles/2337 http://codearticles.ru/articles/2506 Алексей КЧё опять? Будем действовать как в Win API: getlasterror, hresult и всё такое? Сделать специальный InfoException для прикладных ошибок не лучше? Во все времена делалось именно так. codearticles.ruИсключения нужно получать глобально, хотя бы уж через базовый контроллер...Лучше написать фильтр, и присобачить его на соответствующем уровне. В сад! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 13:35 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruИсключение - это серьезный сбой программы, а не просто какая-то нотификация из недр BL и прочих слоёв. Нотификации нужно получать через результаты методов.Зачем? Методы возвращают необходимую информацию. Превращать исключение на нижнем уровне в параметр и начинать его гнать вверх по стеку вызова вручную? нафига. Исключение само пройдет по стеку, не нужно будет париться в каждом методе. К тому же, это не нотификации, это именно исключения. Например неожиданно не найдена запись в БД (возможно она была удалена этим же пользователем в другом сеансе работы). Но, не вижу, почему бы не использовать исключения как нотификации по непредусмотренным стандартной обработкой ситуациям. codearticles.ruИсключения нужно получать глобально, хотя бы уж через базовый контроллер, от которого наследуются остальные В общем-то так и делаю. Есть коллекция стандартных текстов для некоторых исключений, если базовый контроллер нашел исключение в своей коллекции - он меняет ответ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 13:56 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, Первую ссылку глянул, 404 нормально точки в урле схватывает, единственное на старом коде 500-ые поотваливались - Server.GetLastError() в null ушёл, надо починить. Вторую ссылку ещё не тестил. На этом форуме смотрю с точками тоже шняга, но уже не 404, а 500 - http://sql.ru/.../ , в то время как sql.ru/ghggh нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 15:08 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
А кто-нибудь ответ на первоначальный вопрос знает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 15:09 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Shocker.Pro А кто-нибудь ответ на первоначальный вопрос знает? Нет. Решили не по стандарту ошибки обрабатывать, сами и разбирайтесь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 15:20 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 15:23 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.rust_stcodearticles.ru, где у себя на сайте 404 перехватываешь? Чё-то у меня путь с точками нифига не попадает в application error в global.asax, а другие 404 нормал. http://codearticles.ru/articles/2337 http://codearticles.ru/articles/2506 Боян . Глобальный обработчик системных ошибок надо делать через global.asax. А прикладные ошибки лучше ловить фильтрами . codearticles.ruАлексей КЧё опять? Будем действовать как в Win API: getlasterror, hresult и всё такое? Сделать специальный InfoException для прикладных ошибок не лучше? Во все времена делалось именно так. пропущено... Лучше написать фильтр, и присобачить его на соответствующем уровне. В сад! :)А если базовый контроллер будет иметь ответственность прикладного назначения, как это обычно бывает, и нужно будет по разному обрабатывать прикладные ошибки? Нарушение SRP, не? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 15:35 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAРешили не по стандарту ошибки обрабатыватьТо есть предоставление средой MVC мне возможности обрабатывать исключения - нестандарт? skyANAсами и разбирайтесь :)Я бы поразбирался, но у меня нет опыта отладки на хостинге и с данным вопросом не знаю куда соваться. Алексей К 16655639 ?Shocker.ProbazileПотому что веб-сервер используемый при отладке и полноценный IIS это две разных вещи.это-то я догадался, но что именно влияет? По моему пониманию, это вообще не должно было выйти за пределы MVC-шной и моей dll-ки и IIS-у должен быть отдан только готовый statuscode? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 15:38 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Shocker.ProskyANAРешили не по стандарту ошибки обрабатыватьТо есть предоставление средой MVC мне возможности обрабатывать исключения - нестандарт?StatusCode 200 возвращать не стандарт. Exception Handling in ASP.NET MVC ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 15:42 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КГлобальный обработчик системных ошибок надо делать через global.asax. Забудь про global.asax, иначе MVC6 пошлет тебя далеко в лес. Алексей КА прикладные ошибки лучше ловить фильтрами Не принципиально. Алексей КА если базовый контроллер будет иметь ответственность прикладного назначения, как это обычно бывает, и нужно будет по разному обрабатывать прикладные ошибки? Нарушение SRP, не? Никаких по-разному, никаких прикладных назначений. Контроллеры все равны и подчиняются своему базовому классу - основа ООП. Все попрыгушки и мультики идут в сад. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 15:45 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Shocker.ProАлексей К 16655639 ?Shocker.Proпропущено... это-то я догадался, но что именно влияет? По моему пониманию, это вообще не должно было выйти за пределы MVC-шной и моей dll-ки и IIS-у должен быть отдан только готовый statuscode?Имел ввиду версию IIS 7.5, 8.5 и т. п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 15:46 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КГлобальный обработчик системных ошибок надо делать через global.asax. С этим как раз таки и проблема - обычные 404-ые ловит ( http://site.com/ghghghgh), а с точками в урле вообще в Application_Error() не попадает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 15:50 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruАлексей КГлобальный обработчик системных ошибок надо делать через global.asax. Забудь про global.asax, иначе MVC6 пошлет тебя далеко в лес.А MVC6 есть? Вот когда будет, тогда и будем. :-) codearticles.ruАлексей КА прикладные ошибки лучше ловить фильтрами Не принципиально.Принципиально! Нарушение SRP - худшее из бед! Предлагается прикручивать обработку ошибок не наследованием, а композицией. codearticles.ruАлексей КА если базовый контроллер будет иметь ответственность прикладного назначения, как это обычно бывает, и нужно будет по разному обрабатывать прикладные ошибки? Нарушение SRP, не? Никаких по-разному, никаких прикладных назначений.Базовый контроллер для, например, типового CRUD делать не надо? codearticles.ruКонтроллеры все равны и подчиняются своему базовому классу - основа ООП. Все попрыгушки и мультики идут в сад.Это одно из типовых решений, называемое Layer Superclass, но не об этом сейчас. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 15:52 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
st_stАлексей КГлобальный обработчик системных ошибок надо делать через global.asax. С этим как раз таки и проблема - обычные 404-ые ловит ( http://site.com/ghghghgh), а с точками в урле вообще в Application_Error() не попадает.Если туда не попадает, значит в приложении обработать такую ошибку невозможно, если я ничего не путаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 15:54 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruКонтроллеры все равны и подчиняются своему базовому классу - основа ООП. Опытный программист всегда предпочтёт агрегацию наследованию, аспект оверрайду. ООП как основа для архитектуры хороша только для узконаправленных библиотек и задач, напрямую отражающих наследование в своей логике. Основывать архитектуру приложения на ООП будет только новичёк, прочитавший одну из пропогандонских книжонок времён мамонта, или упоротый укурыш. Базовый контроллер как "центр вселенной" приложения это однозначная тухлятина. Тем более для таких вещей, как обработка ошибок и прокидывание сервисов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 15:57 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
st_stАлексей КГлобальный обработчик системных ошибок надо делать через global.asax. С этим как раз таки и проблема - обычные 404-ые ловит ( http://site.com/ghghghgh), а с точками в урле вообще в Application_Error() не попадает.Хотя, может быть это ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:01 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttcodearticles.ruКонтроллеры все равны и подчиняются своему базовому классу - основа ООП. Опытный программист всегда предпочтёт агрегацию наследованию, аспект оверрайду. ООП как основа для архитектуры хороша только для узконаправленных библиотек и задач, напрямую отражающих наследование в своей логике. Основывать архитектуру приложения на ООП будет только новичёк, прочитавший одну из пропогандонских книжонок времён мамонта, или упоротый укурыш. Базовый контроллер как "центр вселенной" приложения это однозначная тухлятина. Тем более для таких вещей, как обработка ошибок и прокидывание сервисов. +1234567890 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:03 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей К Боян . Глобальный обработчик системных ошибок надо делать через global.asax. А прикладные ошибки лучше ловить фильтрами . Ловить надо как можно ближе к месту появления, а не где-то там глобально или в фильтрах. Всё что должен сделать глобальный обработчик, это записать в лог, уведомить администратора и вернуть пользователю 500 (возможно, свою стандартную страницу ошибки). Глобальный обработчик ошибок регистрируется глобальным фильтром, никаких глобал.asax Так надо, чтобы можно было подменять обработчики для разных выпусков (тест, девелоп, продакшен), и для юнит-тестирования (вообще отключать). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:07 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КИмел ввиду версию IIS 7.5, 8.5 и т. п.так а причем тут версия IIS? statuscode IIS-у отдает моя прога/движок MVC, он должен прокидывать его без изменений клиенту... или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:15 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Shocker.ProАлексей КИмел ввиду версию IIS 7.5, 8.5 и т. п.так а причем тут версия IIS? statuscode IIS-у отдает моя прога/движок MVC, он должен прокидывать его без изменений клиенту... или нет? в IIS 7+ можно прописать свои страницы ошибок для каждого приложения в Web.config ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:26 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей К Боян . Глобальный обработчик системных ошибок надо делать через global.asax. А прикладные ошибки лучше ловить фильтрами . Ловить надо как можно ближе к месту появления, а не где-то там глобально или в фильтрах. Всё что должен сделать глобальный обработчик, это записать в лог, уведомить администратора и вернуть пользователю 500 (возможно, свою стандартную страницу ошибки).Будем в каждом методе контроллера ставить одинаковый try...catch ? Удачи! hVosttГлобальный обработчик ошибок регистрируется глобальным фильтром, никаких глобал.asax Так надо, чтобы можно было подменять обработчики для разных выпусков (тест, девелоп, продакшен), и для юнит-тестирования (вообще отключать).Тестировать надо слой логики а не MVC-контроллеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:37 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttЛовить надо как можно ближе к месту появления...Ловить надо как можно дальше от места появления! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:39 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttпропущено... Ловить надо как можно ближе к месту появления , а не где-то там глобально или в фильтрах. Всё что должен сделать глобальный обработчик, это записать в лог, уведомить администратора и вернуть пользователю 500 (возможно, свою стандартную страницу ошибки).Будем в каждом методе контроллера ставить одинаковый try...catch ? Удачи!Почему из выделенного следует, что в методе контроллера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:40 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttЛовить надо как можно ближе к месту появления...Ловить надо как можно дальше от места появления! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:40 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Ловить надо там, где есть возможность обработать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:40 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Провел эксперимент по сабжу. Оказывается на хостинге в Код: c# 1. при обработке исключения заранее лежит 500, а при запуске из студии - 200 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:44 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Будем в каждом методе контроллера ставить одинаковый try...catch ? Удачи!Почему из выделенного следует, что в методе контроллера?Ну пусть будет в методе репозитария, какая разница? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:45 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Почему из выделенного следует, что в методе контроллера?Ну пусть будет в методе репозитария, какая разница?А как в методе репозитория обрабатывать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:47 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAЛовить надо там, где есть возможность необходимость обработать!Поправил. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:48 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
А вот ошибку парсинга кастомизированного пользователем шаблона разметки вполне себе можно обработать в прикладном коде и вывести болезному информацию о том, в какой строке, какого файла он накосячил :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:49 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Ну пусть будет в методе репозитария, какая разница?А как в методе репозитория обрабатывать?Зачем, если есть возможность обработать централизованно в фильтрах? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:49 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... А как в методе репозитория обрабатывать?Зачем, если есть возможность обработать централизованно в фильтрах?Как? В лог записать? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:51 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAА вот ошибку парсинга кастомизированного пользователем шаблона разметки вполне себе можно обработать в прикладном коде и вывести болезному информацию о том, в какой строке, какого файла он накосячил :)Да. Код: c# 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:52 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAА вот ошибку парсинга кастомизированного пользователем шаблона разметки вполне себе можно обработать в прикладном коде и вывести болезному информацию о том, в какой строке, какого файла он накосячил :)Да. Код: c# 1. 2. 3. 4. 5. 6. 7. Смешно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:53 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Зачем, если есть возможность обработать централизованно в фильтрах?Как? В лог записать? :)Да: лог, messageBox, httpResponse и т. п. Кому что требуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:53 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Да. Код: c# 1. 2. 3. 4. 5. 6. 7. Смешно.Посмотри, какая цепочка исключений выстраивается при сохранении через Entity Framework. Ситуация аналогичная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:54 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Как? В лог записать? :)Да: лог, messageBox, httpResponse и т. п. Кому что требуется .Требуется то, что описано в требованиях и отрисовано на мокапах :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:55 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Да: лог, messageBox, httpResponse и т. п. Кому что требуется .Требуется то, что описано в требованиях и отрисовано на мокапах :)Требуется то, что имеет положительный экономический эффект. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:56 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Смешно.Посмотри, какая цепочка исключений выстраивается при сохранении через Entity Framework. Ситуация аналогичная.Ни фига не аналогичная. Пользователь залил пачку из 10 файлов. 3 кривые. Нужно показать разом все не валидные с возможностью посмотреть детализацию ошибки по каждому из них. Проброс исключения наверх тут не катит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:58 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Требуется то, что описано в требованиях и отрисовано на мокапах :)Требуется то, что имеет положительный экономический эффект. :-)Воот! А не: "Да ну нах это говно, пойду к конкурентам". Это вам не корпоративный софт пейсать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 16:59 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Посмотри, какая цепочка исключений выстраивается при сохранении через Entity Framework. Ситуация аналогичная.Ни фига не аналогичная. Пользователь залил пачку из 10 файлов. 3 кривые. Нужно показать разом все не валидные с возможностью посмотреть детализацию ошибки по каждому из них. Проброс исключения наверх тут не катит.AggregateException ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:04 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КА MVC6 есть? Вот когда будет, тогда и будем. :-) http://www.asp.net/vnext/overview/aspnet-vnext/overview Алексей КПринципиально! Нарушение SRP - худшее из бед! Предлагается прикручивать обработку ошибок не наследованием, а композицией. Какой нах SPR, какое оно имеет отношение к кетчингу эксцепций? Алексей КБазовый контроллер для, например, типового CRUD делать не надо? Не надо. Бизнес логике там не место. Алексей КЭто одно из типовых решений, называемое Layer Superclass, но не об этом сейчас. :-) Назови это хоть жопой на горе, по факту оно 100% централизованно решает вопросы исключений, возникающих в контроллерах. А это нам и надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:08 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttcodearticles.ruКонтроллеры все равны и подчиняются своему базовому классу - основа ООП. Опытный программист всегда предпочтёт агрегацию наследованию, аспект оверрайду. ООП как основа для архитектуры хороша только для узконаправленных библиотек и задач, напрямую отражающих наследование в своей логике. Основывать архитектуру приложения на ООП будет только новичёк, прочитавший одну из пропогандонских книжонок времён мамонта, или упоротый укурыш. Базовый контроллер как "центр вселенной" приложения это однозначная тухлятина. Тем более для таких вещей, как обработка ошибок и прокидывание сервисов. Не путать центр вселенной и централизованную обработку ошибок всех контроллеров по единому шаблону. Опытный программист отделяет мух от котлет, а не пишет центры вселенной. Прокидывание и инициализирование сервисов в базовом контроллере через тот же IoC не перечит ни единому паттерну проектирования. Не стоит бояться наследования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:11 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttЛовить надо как можно ближе к месту появления...Ловить надо как можно дальше от места появления! +1234567890 [/quot] P.S. Хвост снова жжет профессионализмом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:12 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAЛовить надо там, где есть возможность обработать! Да везде есть эта возможность. Но тащить эти сопли прям из точки возникновения - кретинизм. Хотя можно и так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:13 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КБудем в каждом методе контроллера ставить одинаковый try...catch ? Удачи! ну желательно. чем ближе к источнику ошибки, тем проще обработать. что там в глобале можно сделать, куда сыпятся вообще всё, кроме как залогировать и послать пользователя куда подальше, я не знаю. например, открывая файл с диска, надо обернуть в try/catch, чтобы если что можно было по месту происшествия решить что делать, если файл не открывается. может просто сообщение показать правильное, а не выплёвывать ошибку 500? и т.д. Алексей КТестировать надо слой логики а не MVC-контроллеров. тестировать надо всё. не везде конечно, но мы стараемся покрывать 100%. это миллион раз помогало, особенно в процессе доработок. допустим сдали проект, всё ок. потом через пол года приходит клиент и говорит, надо кое что приделать, или поменять. доделываем, меняем, а юнит-тесты дают гарантию, что ничего при этом не сломалось. это конечно не отменяет работу QA, но здорово её упрощает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:15 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КХотя, может быть это ? Да, оказалось оно самое. На форумах ссылки на сайт размещают и незарегистрированным пользователям выдаётся что-то типа http://site.com/catalog/.../dresses/ При переходе по такой ссылке юзер идёт мимо Application_Error(). А с relaxedurltofilesystemmapping нормал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:16 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Ни фига не аналогичная. Пользователь залил пачку из 10 файлов. 3 кривые. Нужно показать разом все не валидные с возможностью посмотреть детализацию ошибки по каждому из них. Проброс исключения наверх тут не катит.AggregateException ? Ахаха. Изображаешь Equus asinus? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:18 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAЛовить надо там, где есть возможность обработать! Да везде есть эта возможность. Но тащить эти сопли прям из точки возникновения - кретинизм. Хотя можно и так.С умным видом сказал сферическую фигню :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:21 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruпропущено... Да везде есть эта возможность. Но тащить эти сопли прям из точки возникновения - кретинизм. Хотя можно и так.С умным видом сказал сферическую фигню :) Каков начальный вопрос, таков конечный ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:22 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruНе путать центр вселенной и централизованную обработку ошибок всех контроллеров по единому шаблону. Опытный программист отделяет мух от котлет, а не пишет центры вселенной. Прокидывание и инициализирование сервисов в базовом контроллере через тот же IoC не перечит ни единому паттерну проектирования. Не стоит бояться наследования. Мозги не ипай людям. Страх здесь не при чём. Танки грязи не боятся, но это не значит, что танкам при этом надо всегда по уши в грязи сидеть. Про мух и котлет в самую точку, только ты по ходу как раз этого не понимаешь. Прокидывание и инициализация в базовом контроллере - это убогое говнище, за одно упоминание которого уже должно быть стыдно, а так делать это себя не уважать. И про какие такие мухи и котлеты ты мне тут чешешь? Ты можешь базовый контроллер заменить, не трогая ни самого базового контроллера, ни его наследника? Хер. Ты можешь сделать независимый компонент с контроллером, который не знает про существование твоего базового говноконтроллера, и при этом подключается и существует с остальными контроллерами на равных, пользуясь теми же "благами цивилизации"? Как ты тестировать это говнище будешь? Я понимаю, что ничего из вышеперечисленного ты никогда не делал, юнит-тестирование это для тебя филькина грамота, о которой ты только в статьях на хабре читал, а запилить студенческую поделку это пжалста, потом напускать на себя умный вид, с понтом знаешь как-нада ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:31 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КБудем в каждом методе контроллера ставить одинаковый try...catch ? Удачи! ну желательно. чем ближе к источнику ошибки, тем проще обработать. что там в глобале можно сделать, куда сыпятся вообще всё, кроме как залогировать и послать пользователя куда подальше, я не знаю. например, открывая файл с диска, надо обернуть в try/catch, чтобы если что можно было по месту происшествия решить что делать, если файл не открывается. может просто сообщение показать правильное, а не выплёвывать ошибку 500? и т.д."Правильное сообщение" определяется по типу исключения при логировании. hVosttАлексей КТестировать надо слой логики а не MVC-контроллеров. тестировать надо всё.Тестировать не надо ничего? Наверное, истина где-то посередине. hVosttне везде конечно, но мы стараемся покрывать 100%.Это маразм. hVosttэто миллион раз помогалоЭто самовнушение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:35 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... AggregateException ? Ахаха. Изображаешь Equus asinus?Просто пошутил. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:35 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей К"Правильное сообщение" определяется по типу исключения при логировании. я не имел в виду под правильным сообщением строку с сообщением. исключение прерывает работу всего метода, и тебе уже тупо некуда воткнуть это сообщение, только показать его глобально. пользователь выделил и отправил на сервак 10 изображений, среди них случайно попал файл не являющийся изображением. в твоём случае вся загрузка отвалится с одним тупым сообщением: Ошибка 500, файл не является изображением. в то время, как надо было загрузить всё, что можно было загрузить и правильно отчитаться. Алексей КЭто маразм. ты можешь делать так как считаешь нужным. я не запрещаю маразм сидеть на стуле, сижу на потолке! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:41 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей К"Правильное сообщение" определяется по типу исключения при логировании. я не имел в виду под правильным сообщением строку с сообщением. исключение прерывает работу всего метода, и тебе уже тупо некуда воткнуть это сообщение, только показать его глобально. пользователь выделил и отправил на сервак 10 изображений, среди них случайно попал файл не являющийся изображением. в твоём случае вся загрузка отвалится с одним тупым сообщением: Ошибка 500, файл не является изображением. в то время, как надо было загрузить всё, что можно было загрузить и правильно отчитаться.Это частный случай. Не нужно на него ориентироваться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 17:44 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КЭто частный случай. Не нужно на него ориентироваться. А кто на него ориентируется? Это один из многочисленных примеров с ходу пришедших на ум. Глобальный отлов исключений связан с неожиданными ошибками, и там нет смысла изучать тип исключения, это ничего не даст, ни чем не поможет пользователю, а пользователя по правилам хорошего тона информировать о подробностях таких ошибок не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 20:30 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КЭто частный случай. Не нужно на него ориентироваться. А кто на него ориентируется?Понимаешь, Алексей он всегда через призму своего проекта говорит. В его унылом корпоративном продукте это частный случай. В его унылом корпоративном продукте не нужно на него ориентироваться. Вот так его надо читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.10.2014, 22:50 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAhVosttпропущено... А кто на него ориентируется?Понимаешь, Алексей он всегда через призму своего проекта говорит. В его унылом корпоративном продукте это частный случай. В его унылом корпоративном продукте не нужно на него ориентироваться. Вот так его надо читать.Ну нет, я буду смотреть через призму унылых CRM от hVostt, ага... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2014, 18:30 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КНу нет, я буду смотреть через призму унылых CRM от hVostt, ага... гони 500 р.! никто не может смотреть через призму моих унылых CRM забесплатно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.10.2014, 19:21 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Понимаешь, Алексей он всегда через призму своего проекта говорит. В его унылом корпоративном продукте это частный случай. В его унылом корпоративном продукте не нужно на него ориентироваться. Вот так его надо читать.Ну нет, я буду смотреть через призму унылых CRM от hVostt, ага... Хоть раз бы мог задуматься о том, что, помимо вялотекущих корпоративных бизнес-процессов, существуют и другие, со своей спецификой и требованиями. Ничего. В один прекрасный момент топ-менеджмент вдруг поменяется, откроешь для себя новый мир ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 11:04 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Ну нет, я буду смотреть через призму унылых CRM от hVostt, ага... Хоть раз бы мог задуматься о том, что, помимо вялотекущих корпоративных бизнес-процессов, существуют и другие, со своей спецификой и требованиями.Из того, что было озвучено: "закачать 10 файлов на сервер" и "парсинг кастомизированного пользователем шаблона разметки" - это специфика, да, это всё меняет. Ну рассказывай, какая там у вас специфика ещё, чтобы я смог задуматься. skyANAНичего. В один прекрасный момент топ-менеджмент вдруг поменяется, откроешь для себя новый мир Очень испугался... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 16:21 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Ну какая специфика... Представь перманентный отчётный период, когда не раз в год корпоративный планктон жалуется, что ни фига не работает (весь год они тупо закрывали твой мессадж бокс), в постоянно находят косяки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 16:26 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей К, да и смысл мне тебе что-то рассказывать? Я участвовал в разработке для НК "ЮКОС", это было 8-11 лет назад. Видел я твой подход. Понимаю, что другие решения для тебя - это "специфика". Ещё тогда говорили, что "ЮКОС" опережает лет на 7 другие компании в России по автоматизации. Мы начали ASP.NET внедрять в 2004-м, с чем ты только в этом году познакомился. Выходит не на 7, а на все 10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 16:39 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAНу какая специфика... Представь перманентный отчётный период, когда не раз в год корпоративный планктон жалуется, что ни фига не работает (весь год они тупо закрывали твой мессадж бокс), в постоянно находят косяки Мы делаем оперативные системы, они работают 24/7, так что не тот случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:20 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAМы начали ASP.NET внедрять в 2004-м, с чем ты только в этом году познакомился.То, с чем я познакомился, в 2004-м ещё не было. В 2004-м все вменяемые разработчики писали корпоративное UI на Delphi. .Net в те времена был ещё так себе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:25 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAНу какая специфика... Представь перманентный отчётный период, когда не раз в год корпоративный планктон жалуется, что ни фига не работает (весь год они тупо закрывали твой мессадж бокс), в постоянно находят косяки Мы делаем оперативные системы, они работают 24/7, так что не тот случай.Почему не тот, или что-ты подразумеваешь под оперативной системой? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:38 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КВ 2004-м все вменяемые разработчики писали корпоративное UI на Delphi.А мы писали на Centura SQL Windows 32 :) ASP.NET вообще-то для веб-морды внедряли. Покажи как мне тех вменяемых разработчиков, кто тебе веб-морду на Delphi в 2004-м писали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:41 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Мы делаем оперативные системы, они работают 24/7, так что не тот случай.Почему не тот, или что-ты подразумеваешь под оперативной системой? :)Толсто тролишь, не понравилось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:43 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
А вообще концепция MVC была ещё в 1979 году описана. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:43 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAASP.NET вообще-то для веб-морды внедряли. Покажи как мне тех вменяемых разработчиков, кто тебе веб-морду на Delphi в 2004-м писали.Windows-приложения, разумеется. Web тогда не был мэйнстримом в корпоративе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:45 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Почему не тот, или что-ты подразумеваешь под оперативной системой? :)Толсто тролишь, не понравилось. Ну почему. Как такового определения оперативной системы я не знаю. Многопользовательская система, система коллективного доступа. Ну поступают 24/7 в систему данные, обрабатываются. А как наступает отчётный период, так обязательно тут что-то не сходится, там не то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:46 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAА вообще концепция MVC была ещё в 1979 году описана.Я про AJAX, jQuery, TypeScript и прочие клиентские плюшки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:46 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAASP.NET вообще-то для веб-морды внедряли. Покажи как мне тех вменяемых разработчиков, кто тебе веб-морду на Delphi в 2004-м писали.Windows-приложения, разумеется. Web тогда не был мэйнстримом в корпоративе.В российском корпоративе :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:47 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAА вообще концепция MVC была ещё в 1979 году описана.Я про AJAX, jQuery, TypeScript и прочие клиентские плюшки.IFRAME, Dojo, JavaScript, слышал? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:49 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Толсто тролишь, не понравилось. Ну почему. Как такового определения оперативной системы я не знаю. Многопользовательская система, система коллективного доступа. Ну поступают 24/7 в систему данные, обрабатываются. А как наступает отчётный период, так обязательно тут что-то не сходится, там не то.Кроме месячной отчётности в наших системах присутствует организация работы оперативных сотрудников: отображение оперативной информации, различные контроли, поддержка принятия решения и т. п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:49 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Ну почему. Как такового определения оперативной системы я не знаю. Многопользовательская система, система коллективного доступа. Ну поступают 24/7 в систему данные, обрабатываются. А как наступает отчётный период, так обязательно тут что-то не сходится, там не то.Кроме месячной отчётности в наших системах присутствует организация работы оперативных сотрудников: отображение оперативной информации, различные контроли, поддержка принятия решения и т. п.И какое решение принимает пользователь, когда видит сообщение об ошибке и стек трейсом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:51 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Завёрнутое в красивый мессадж бокс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:51 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Я про AJAX, jQuery, TypeScript и прочие клиентские плюшки.IFRAME, Dojo, JavaScript, слышал? :)Да. Нет. Да. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:52 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... IFRAME, Dojo, JavaScript, слышал? :)Да. Нет. Да. :-)Ну вот видишь, всего-то надо было о Dojo узнать, чтобы не ждать 10 лет :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:53 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Кроме месячной отчётности в наших системах присутствует организация работы оперативных сотрудников: отображение оперативной информации, различные контроли, поддержка принятия решения и т. п.И какое решение принимает пользователь, когда видит сообщение об ошибке и стек трейсом?Нужно исправить введённые данные и повторить попытку сохранения? Очевидно ведь, не? А стектрейс системный администратор отправит разработчикам в случае нештатной ситуации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:55 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Да. Нет. Да. :-)Ну вот видишь, всего-то надо было о Dojo узнать, чтобы не ждать 10 лет :)Knockout? Bootstrap? TypeScript? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:56 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... И какое решение принимает пользователь, когда видит сообщение об ошибке и стек трейсом?Нужно исправить введённые данные и повторить попытку сохранения? Очевидно ведь, не? А стектрейс системный администратор отправит разработчикам в случае нештатной ситуации.А если он ввёл пачку данных, то что конкретно исправлять? По одной записи вводить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:58 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Ну вот видишь, всего-то надо было о Dojo узнать, чтобы не ждать 10 лет :)Knockout? Bootstrap? TypeScript?Вопрос(ы) в чём? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 17:59 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
А если ошибка не в данных, а в правах доступа, пользователь поймёт это, или будет жать "Сохранить", пока разработчики не ответят админу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:01 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Нужно исправить введённые данные и повторить попытку сохранения? Очевидно ведь, не? А стектрейс системный администратор отправит разработчикам в случае нештатной ситуации.А если он ввёл пачку данных, то что конкретно исправлять? По одной записи вводить?Да всё там будет нормально, не переживай. :-) skyANAА если ошибка не в данных, а в правах доступа, пользователь поймёт это, или будет жать "Сохранить", пока разработчики не ответят админу?Передёргиваешь? Я говорил про нештатную ситуацию, возникла системная, она же "неожиданная" (ц) hVostt, ошибка. Нет прав - это штатная ситуация с информативным для пользователя сообщением. Не пойму, какое это имеет отношение к вопросу о том, как пробрасывать ошибку: исключением или результатом методов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:07 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей К, то есть шаттные исключительные ситуации всё-таки обрабатываются, а не просто на самый верх пробрасываются в глобальный catch? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:10 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... А если он ввёл пачку данных, то что конкретно исправлять? По одной записи вводить?Да всё там будет нормально, не переживай. :-)Ну да. Куда оператору деваться :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:11 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей К, то есть шаттные исключительные ситуации всё-таки обрабатываются, а не просто на самый верх пробрасываются в глобальный catch?Если нет необходимости обработать по месту, то пробрасываются. Используется специальный класс InfoException. По типу исключения в ExceptionFilterAttribute формируется соответствующий респонз клиенту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей К, а исключения в рамках конкурентного редактирования как обрабатываете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей К, а исключения в рамках конкурентного редактирования как обрабатываете?Некоторые системные исключения преобразуются в прикладные, в том числе ошибка оптимистической блокировки, нарушение уникального индекса в БД и т. п. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:16 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КKnockout? Bootstrap? TypeScript? JavaScript? CSS? JavaScript? Ты из какой берлоги вылез? Или только вчера родился? А вообще толпа подобной школоты заселившая интернеты жгут: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:17 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAАлексей К, а исключения в рамках конкурентного редактирования как обрабатываете?Некоторые системные исключения преобразуются в прикладные, в том числе ошибка оптимистической блокировки, нарушение уникального индекса в БД и т. п.Ну и как обрабатываете-то? Снова мессадж бокс и "Нужно исправить введённые данные и повторить попытку сохранения"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:22 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Некоторые системные исключения преобразуются в прикладные, в том числе ошибка оптимистической блокировки, нарушение уникального индекса в БД и т. п.Ну и как обрабатываете-то? Снова мессадж бокс и "Нужно исправить введённые данные и повторить попытку сохранения"? По ходу Алексей просто малость загнался :) Теперь оказывается у него "системные" и "прикладные" исключения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:23 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КKnockout? Bootstrap? TypeScript? JavaScript? CSS? JavaScript? Ты из какой берлоги вылез? Или только вчера родился? Knockout: мне просто понравился, можно и без него, конечно, но будет не так приятно как с ним. Bootstrap: хоть какой-то стандарт для организации UI, без стандарта плохо. TypeScript: после него на голом JS писать не тянет. Это ты в какой берлоге сидишь все эти годы. Я работаю с Web сравнительно недавно, могу смотреть на многие вещи свежим взглядом, в отличие от... Так что поверь, у меня огромное преимущество. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:24 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttпропущено... JavaScript? CSS? JavaScript? Ты из какой берлоги вылез? Или только вчера родился? Knockout: мне просто понравился, можно и без него, конечно, но будет не так приятно как с ним. Bootstrap: хоть какой-то стандарт для организации UI, без стандарта плохо. TypeScript: после него на голом JS писать не тянет. Это ты в какой берлоге сидишь все эти годы. Я работаю с Web сравнительно недавно, могу смотреть на многие вещи свежим взглядом, в отличие от... Так что поверь, у меня огромное преимущество. :-)Ну ну, свежий взгляд... От твоих шаблонов веет таким свежим взглядом :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:28 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Некоторые системные исключения преобразуются в прикладные, в том числе ошибка оптимистической блокировки, нарушение уникального индекса в БД и т. п.Ну и как обрабатываете-то? Снова мессадж бокс и "Нужно исправить введённые данные и повторить попытку сохранения"? 16663281 Ну а визуализация полученных данных на клиенте, как мы понимаем, может быть любая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:28 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Ну и как обрабатываете-то? Снова мессадж бокс и "Нужно исправить введённые данные и повторить попытку сохранения"? 16663281 Ну а визуализация полученных данных на клиенте, как мы понимаем, может быть любая.Не понял. То есть системные в прикладные, а прикадные в InfoException, а обработки на клиенте нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:31 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAпропущено... Ну и как обрабатываете-то? Снова мессадж бокс и "Нужно исправить введённые данные и повторить попытку сохранения"? По ходу Алексей просто малость загнался :) Теперь оказывается у него "системные" и "прикладные" исключения Тебя удивляет анализ типа исключения при его обработке? Неожиданно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:31 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КKnockout: мне просто понравился, можно и без него, конечно, но будет не так приятно как с ним. С ним, без него... Формы с биндингом писались даже до появления jQuery и prototype, не говоря уже о нокауте. Алексей КBootstrap: хоть какой-то стандарт для организации UI, без стандарта плохо. Какой ещё стандарт? Обычная CSS-сетка с дополнительным набором стилей для некоторых компонентов и совсем немного скриптов в комплекте. Такие сетки существовали далеко задолго до бутстрапа, и сегодня их великое множество. Никакой это не стандарт, просто популярная сетка. Алексей КTypeScript: после него на голом JS писать не тянет. Да пофигу, на выходе всё равно JavaScript и большего чем позволяет JavaScript на TypeScripte достигнуть нельзя. Алексей КЭто ты в какой берлоге сидишь все эти годы. Ты зациклился на KO+BS+TS и всё. Это весь твой мир. Похоже ты из берлоги и не вылазишь, просто дёрнул из "внешнего мира" первое что попалось и сидишь мусолишь. Выходи из судорга Алексей КЯ работаю с Web сравнительно недавно, могу смотреть на многие вещи свежим взглядом, в отличие от... Так что поверь, у меня огромное преимущество. :-) Какой ещё "свежий взгляд"? Какое преимущество? ахаахаах аж прослезился ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:32 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... 16663281 Ну а визуализация полученных данных на клиенте, как мы понимаем, может быть любая.Не понял. То есть системные в прикладные, а прикадные в InfoException, а обработки на клиенте нет?На клиенте анализ AJAX-респонза, или ты о чём? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:33 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КТебя удивляет анализ типа исключения при его обработке? Неожиданно... Как раз меня ничего не удивляет, я вижу что ты как уж на сковородке вертишься. Сначала нам парил, что дескать не надо обрабатывать исключения по месту, а теперь выясняется, что некоторые всё таки надо. Ты если так по-глупому загоняешься, так придерживайся одной линии, иди до конца так сказать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:34 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КKnockout: мне просто понравился, можно и без него, конечно, но будет не так приятно как с ним. С ним, без него... Формы с биндингом писались даже до появления jQuery и prototype, не говоря уже о нокауте.Подписка на события и биндинг немного разные вещи. hVosttАлексей КBootstrap: хоть какой-то стандарт для организации UI, без стандарта плохо. Какой ещё стандарт? Обычная CSS-сетка с дополнительным набором стилей для некоторых компонентов и совсем немного скриптов в комплекте. Такие сетки существовали далеко задолго до бутстрапа, и сегодня их великое множество. Никакой это не стандарт, просто популярная сетка.Называй это как хочешь. Пусть будет "популярная сетка", под которую пишется множество контролов и скинов различными авторами. hVosttАлексей КTypeScript: после него на голом JS писать не тянет. Да пофигу, на выходе всё равно JavaScript и большего чем позволяет JavaScript на TypeScripte достигнуть нельзя.Ты не пишешь клиентский код, поэтому тебе пофигу. hVosttАлексей КЭто ты в какой берлоге сидишь все эти годы. Ты зациклился на KO+BS+TS и всё. Это весь твой мир. Похоже ты из берлоги и не вылазишь, просто дёрнул из "внешнего мира" первое что попалось и сидишь мусолишь. Выходи из судорга Я выбрал технологический стек для моих текущих проектов, он меня устраивает. В настоящее время мне больше ничего не надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:38 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVostt Алексей КТебя удивляет анализ типа исключения при его обработке? Неожиданно... Как раз меня ничего не удивляет, я вижу что ты как уж на сковородке вертишься. Сначала нам парил, что дескать не надо обрабатывать исключения по месту, а теперь выясняется, что некоторые всё таки надо. Ты если так по-глупому загоняешься, так придерживайся одной линии, иди до конца так сказать По какому месту? Тебе в третий раз произнести про ExceptionFilterAttribute ? На этом предлагаю остановиться, скучно с вами... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:42 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КПо какому месту? Тебе в третий раз произнести про ExceptionFilterAttribute ? Это единственное место, где ты ловишь исключения? В твоём коде нет ни одного try/catch? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:47 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Не понял. То есть системные в прикладные, а прикадные в InfoException, а обработки на клиенте нет?На клиенте анализ AJAX-респонза, или ты о чём?А можешь привести пример кода этого анализа? Хочется понять, что такое "визуализация полученных данных на клиенте, как мы понимаем, может быть любая". А публичная часть системы у вас есть? Ну то есть куда не надо логинится и можно зайти с мобилы например не из корпоративной сетки? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:48 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КПо какому месту? Тебе в третий раз произнести про ExceptionFilterAttribute ? Это единственное место, где ты ловишь исключения? В твоём коде нет ни одного try/catch?Ну ты сам-то как думаешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:50 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVostt пропущено... Как раз меня ничего не удивляет, я вижу что ты как уж на сковородке вертишься. Сначала нам парил, что дескать не надо обрабатывать исключения по месту, а теперь выясняется, что некоторые всё таки надо. Ты если так по-глупому загоняешься, так придерживайся одной линии, иди до конца так сказать По какому месту? Тебе в третий раз произнести про ExceptionFilterAttribute ? На этом предлагаю остановиться, скучно с вами...Ну вообще-то перехват определённого типа исключения и оборачивание их в свои с добавлением дополнительной информации и наверняка каким-то форматированием - это обработка :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:51 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Теперь становится понятно, почему ты так поправил моё утверждение: "Ловить надо там, где есть возможность необходимость обработать!" ( 16657561 ). Ну да... Необходимо же под реализацию ExceptionFilterAttribute подстраиваться :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:55 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... На клиенте анализ AJAX-респонза, или ты о чём?А можешь привести пример кода этого анализа? Хочется понять, что такое "визуализация полученных данных на клиенте, как мы понимаем, может быть любая". Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:56 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttпропущено... Это единственное место, где ты ловишь исключения? В твоём коде нет ни одного try/catch?Ну ты сам-то как думаешь? Я спрашиваю. Ответить можешь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:56 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... По какому месту? Тебе в третий раз произнести про ExceptionFilterAttribute ? На этом предлагаю остановиться, скучно с вами...Ну вообще-то перехват определённого типа исключения и оборачивание их в свои с добавлением дополнительной информации и наверняка каким-то форматированием - это обработка :)Ну а где я утверждал, что try...catch в программе запрещены? Тебя hVostt что ли укусил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:58 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей Кпропущено... Ну ты сам-то как думаешь? Я спрашиваю. Ответить можешь?Странный вопрос, впрочем, да, есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 18:59 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... А можешь привести пример кода этого анализа? Хочется понять, что такое "визуализация полученных данных на клиенте, как мы понимаем, может быть любая". Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:06 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Код: 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. Доступа из интернета к системе не планируется, но поддержка работы через "мобилу", думаю, будет.Что такое log и как он используется для "визуализации полученных данных на клиенте"?В нём отображается MessageBox, сделанный через Bootstrap-ный modal. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:09 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Ну вообще-то перехват определённого типа исключения и оборачивание их в свои с добавлением дополнительной информации и наверняка каким-то форматированием - это обработка :)Ну а где я утверждал, что try...catch в программе запрещены? Тебя hVostt что ли укусил? Ну где, где... Вот: 16657497 :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:10 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Ну а где я утверждал, что try...catch в программе запрещены? Тебя hVostt что ли укусил? Ну где, где... Вот: 16657497 :)Ну это же не запрещает, если надо. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:12 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Что такое log и как он используется для "визуализации полученных данных на клиенте"?В нём отображается MessageBox, сделанный через Bootstrap-ный modal.А если я хочу не MessageBox, а другое поведение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:13 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... В нём отображается MessageBox, сделанный через Bootstrap-ный modal.А если я хочу не MessageBox, а другое поведение?Очевидно, придётся переписать содержимое класса Log. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Ну где, где... Вот: 16657497 :)Ну это же не запрещает, если надо. :-)Ахаха, Алексей в своём репертуаре. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:15 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... А если я хочу не MessageBox, а другое поведение?Очевидно, придётся переписать содержимое класса Log. :-)Переписать? Как всё запущено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:16 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
"визуализация полученных данных на клиенте, как мы понимаем, может быть любая", если переписать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:17 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
свежий взгляд, чо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:18 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Очевидно, придётся переписать содержимое класса Log. :-)Переписать? Как всё запущено.А как надо? Чтобы оно само написалось? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:18 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Переписать? Как всё запущено.А как надо? Чтобы оно само написалось? Ну хотелось бы как-то гибко в зависимости от модели прозрачно использовать ту, или иную реализацию. А не либо MessageBox, либо переписать :) И не хотелось, чтобы response parser вообще что-то знал о UI. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:27 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... А как надо? Чтобы оно само написалось? Ну хотелось бы как-то гибко в зависимости от модели прозрачно использовать ту, или иную реализацию. А не либо MessageBox, либо переписать :)Надо будет - сделаем. Пока не надо. skyANAИ не хотелось, чтобы response parser вообще что-то знал о UI.Он про UI ничего и не знает. Он знает только про класс Log, который в любой момент может стать интерфейсом, внутри класса Log можно сделать через IoC механизм хранилищ - тут много способов решения. Главное, что абстракция в виде класса Log есть, остальное всё разрулится по мере необходимости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 19:57 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttпропущено... Я спрашиваю. Ответить можешь?Странный вопрос, впрочем, да, есть. Зачем, если есть ExceptionFilterAttribute? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 20:03 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей Кпропущено... Странный вопрос, впрочем, да, есть. Зачем, если есть ExceptionFilterAttribute?Чтобы обрабатывать по месту при необходимости. Впрочем, чаще есть необходимость генерации исключения: Код: c# 1. 2. 3. 4. 5. Вот она, ошибка прикладного уровня, которая стала для некоторых открытием. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 20:17 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей Кпропущено... Странный вопрос, впрочем, да, есть. Зачем, если есть ExceptionFilterAttribute?Вдогонку: я оперирую понятиями "чаще" и "реже", а не "бывает" и "не бывает", как некоторым хотелось бы. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 20:21 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Ну хотелось бы как-то гибко в зависимости от модели прозрачно использовать ту, или иную реализацию. А не либо MessageBox, либо переписать :)Надо будет - сделаем. Пока не надо. skyANAИ не хотелось, чтобы response parser вообще что-то знал о UI.Он про UI ничего и не знает. Он знает только про класс Log, который в любой момент может стать интерфейсом, внутри класса Log можно сделать через IoC механизм хранилищ - тут много способов решения. Главное, что абстракция в виде класса Log есть, остальное всё разрулится по мере необходимости.Да, да, да... "придётся переписать" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 21:16 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttпропущено... Зачем, если есть ExceptionFilterAttribute?Чтобы обрабатывать по месту при необходимости. Впрочем, чаще есть необходимость генерации исключения: Код: c# 1. 2. 3. 4. 5. Вот она, ошибка прикладного уровня, которая стала для некоторых открытием.И в чём смысл такого InfoException? Чисто чтобы в фильтре по типу отличить? Хорошо вам в корпоративе. Не надо о локализации думать и о том, что неплохо бы данные какие добавить, validatione rule к примеру, который был нарушен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 21:23 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей К, а вот если не пользователь, а сервис запулит пачку данных, среди которых будет парочка невалидных объектов, то он также цинично будет послан на фиг: "Нельзя A больше B. До свидания!"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 21:26 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КЧтобы обрабатывать по месту при необходимости. Впрочем, чаще есть необходимость генерации исключения: Код: c# 1. 2. 3. 4. 5. Вот она, ошибка прикладного уровня, которая стала для некоторых открытием. На кой хер использовать исключения для реализации прикладной логики? Мало того, так делать -- это отвратительный, мерзкий тон, так ещё и путаешь людей, которые могут сопровождать этот код: ведь оказывается InfoException это вовсе не ошибка, а контейнер для проброса сообщения "наверх". Фу-фу-фу. Можешь считать, что это норм, но, как говориться, писать тухлый говнокод не запретишь. Селяви. А то мозг тут нам выносил, теперь-то всё понятно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 22:46 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAИ в чём смысл такого InfoException? Чисто чтобы в фильтре по типу отличить? Об этом уже Рихтер писал не однократно. Новички и неопытные сопливые программисты часто пытаются заюзать исключение, как контейнер для проброса информации сквозь слои инфраструктуры, ведь зачем использовать мозг и творить внятную архитектуру? Говорилось миру не однократно, это касается не только C#, но и С++ и Java и других платформ: не используйте исключения для реализации логики, как контейнер для переноса информационных сообщений, как способ для сообщений "сквозь слои", это средство для обработки ошибок, но не для логики (абсолютно не важно какого уровня, топ или лоу). Всякие InfoException -- это просто курам на смех. Вот находятся же умники... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2014, 22:51 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAИ в чём смысл такого InfoException? Чисто чтобы в фильтре по типу отличить? Об этом уже Рихтер писал не однократно. Новички и неопытные сопливые программисты часто пытаются заюзать исключение, как контейнер для проброса информации сквозь слои инфраструктуры, ведь зачем использовать мозг и творить внятную архитектуру? Говорилось миру не однократно, это касается не только C#, но и С++ и Java и других платформ: не используйте исключения для реализации логики, как контейнер для переноса информационных сообщений, как способ для сообщений "сквозь слои", это средство для обработки ошибок, но не для логики (абсолютно не важно какого уровня, топ или лоу). Всякие InfoException -- это просто курам на смех. Вот находятся же умники...Теперь давай список негативных эффектов от предлагаемого решения, конкретно, по пунктам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 05:34 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Чтобы обрабатывать по месту при необходимости. Впрочем, чаще есть необходимость генерации исключения: Код: c# 1. 2. 3. 4. 5. Вот она, ошибка прикладного уровня, которая стала для некоторых открытием.И в чём смысл такого InfoException? Чисто чтобы в фильтре по типу отличить?Да. skyANAХорошо вам в корпоративе. Не надо о локализации думатьВместо строковой константы в исключении указать ID сообщения конечно-же сложно. skyANAи о том, что неплохо бы данные какие добавить, validatione rule к примеру, который был нарушен.Добавить свойств к классу исключения тоже можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 05:36 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей К, а вот если не пользователь, а сервис запулит пачку данных, среди которых будет парочка невалидных объектов, то он также цинично будет послан на фиг: "Нельзя A больше B. До свидания!"?Всё зависит от технического задания. Очевидно, логику можно написать как угодно. Если речь идёт о сохранении не в одной транзакции, соглашусь, результат, наверное, лучше вернуть не исключением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 05:39 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КТеперь давай список негативных эффектов от предлагаемого решения, конкретно, по пунктам. Проверка данных на корректность решается с помощью механизмов валидации, коих что ASP.NET MVC, что в ASP.NET WebAPI навалено плотной кучей, также легко и непринуждённо прибивается к JavaScript, и даже к твоему любимому knockout. Недопустимые операции не должны допускаться, а не осыпать пользователя тупыми проклятьями "не то нажал!!!", "не так сделал!!!" -- истеричные программы, напрямую отражающие сущность программиста должны прямиком направляться в сад. Как это делается? Кнопочки дисейблятся или скрываются, чекбоксы, радиобатоны, группы контролов, ссылки, поля и другие неведыме штуковины не должны давать пользователю нарваться на истеричный мат. Что ещё? Нарушения целостности данных, например, дублирование уникального индекса поля должно решаться валидацией, а не исключением. Арифметические выражения, и деления на нуль -- валидация. Загрузка неправильных файлов и изображений -- валидация. И т.д. Что в остатке? Реальные ошибки-исключения, которые были непредвидены, не учтены или их тупо нельзя было предвидеть на момент разработки. А это значит, что пользователя надо ласково оповестить, что программер натупил и очень-очень скоро руководство надаёт тому по шее, чтобы он исправел багу, а не показывать пользователю "расшифрованное" сообщение об ошибке -- это совершенно точно ничем не поможет пользователю, только резко ухудшит его настроение. В отдельных случаях это может напрямую сказаться на финансовых показателях компании. Никакого смысла в анализе "типа" ошибки здесь нет, так как ошибки поэтому и называются ошибками, что нарушают логику программы. А закладывать ошибки в логику программы будет только дундук. Превращать исключения в средство доставки сообщений пользователю -- идиотизм чистой воды. Если этот идиотизм сам не излечится со временем, с опытом, поможет только, как это модно сейчас говорить в определённых кругах, люстрация Вот ещё пример. Пользователь жмёт на чужой комментарий "Ответить", и долго, вдумчиво выплёскивает то, что у него накопилось к оппоненту. Но в это время оппонент решил, что человечество к его комментарию пока ещё не готово и удаляет своё творение. Пользователь жмёт "Отправить" и... получает матюки в ответ, дескать ты чё такой тупой, пытаешься отвечать на удалённые комментарии. Хотя можно было предложить пользователю создать новый комментарий с отправленным текстом вместо ответа или сохранить в черновики, или отправить личное сообщение... Это невозможно никак сделать с твоим подходом. Никак. Ошибки надо ловить там где их можно (и нужно) обработать. А не рисовать некий универсальный подход, которым можно только задницу подтереть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 08:37 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttпропущено... Зачем, если есть ExceptionFilterAttribute?Вдогонку: я оперирую понятиями "чаще" и "реже", а не "бывает" и "не бывает", как некоторым хотелось бы. :-) За такое нужно минимум ведро на голову одень, взять палочки и начать барабанить по ведру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 10:28 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КТеперь давай список негативных эффектов от предлагаемого решения, конкретно, по пунктам. Самый жирный гвоздь в твоё изобретение - нерасширяемое решение, которое нельзя ни с чем интегрировать. Нужно будет писать всяческие обертки и костыли для трансляции твоего исключения во внятный вид и для каждого случая. Тот же unobtrusive уже идет лесом. Для таких телодвижений есть универсальные IDataErrorInfo и IValidatableObject, которые можно использовать хоть в сильверлайте космосе. И самое главное - ты всеми будешь понят и распознан, не надо ничего писать в нагрузку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 10:37 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttКнопочки дисейблятся или скрываются, чекбоксы, радиобатоны, группы контролов, ссылки, поля и другие неведыме штуковины не должны давать пользователю нарваться на истеричный мат.Типичная ошибка профессионального дилетанта в области UI: кнопочка задизейблена, пользователь сидит в обнимку с хрустальным шаром и гадает, почему кнопка недоступна. Так нужно делать только в самых очевидных случаях, которых не много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 11:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruАлексей КТеперь давай список негативных эффектов от предлагаемого решения, конкретно, по пунктам. Самый жирный гвоздь в твоё изобретение - нерасширяемое решение, которое нельзя ни с чем интегрировать. Нужно будет писать всяческие обертки и костыли для трансляции твоего исключения во внятный вид и для каждого случая. Тот же unobtrusive уже идет лесом. Для таких телодвижений есть универсальные IDataErrorInfo и IValidatableObject, которые можно использовать хоть в сильверлайте космосе. И самое главное - ты всеми будешь понят и распознан, не надо ничего писать в нагрузку.Причём тут валидация в UI на клиенте? Мы не об этом сейчас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 11:15 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttВот ещё пример. Пользователь жмёт на чужой комментарий "Ответить", и долго, вдумчиво выплёскивает то, что у него накопилось к оппоненту. Но в это время оппонент решил, что человечество к его комментарию пока ещё не готово и удаляет своё творение. Пользователь жмёт "Отправить" и... получает матюки в ответ, дескать ты чё такой тупой, пытаешься отвечать на удалённые комментарии. Хотя можно было предложить пользователю создать новый комментарий с отправленным текстом вместо ответа или сохранить в черновики, или отправить личное сообщение... Это невозможно никак сделать с твоим подходом. Никак. Ошибки надо ловить там где их можно (и нужно) обработать. А не рисовать некий универсальный подход, которым можно только задницу подтереть.Ну с чего ты взял, что это невозможно? Всё возможно, просто ты не знаешь как. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 11:16 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAХорошо вам в корпоративе. Не надо о локализации думатьВместо строковой константы в исключении указать ID сообщения конечно-же сложно.Какой ещё ID? Вы с локализацией не сталкивались ещё? Алексей КskyANAи о том, что неплохо бы данные какие добавить, validatione rule к примеру, который был нарушен.Добавить свойств к классу исключения тоже можно.Когда? Через год, два? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 11:20 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КТипичная ошибка профессионального дилетанта в области UI: кнопочка задизейблена, пользователь сидит в обнимку с хрустальным шаром и гадает, почему кнопка недоступна. Так нужно делать только в самых очевидных случаях, которых не много. Про всплывающие подсказки видимо ты не слышал? Ну не смеши тапки Ленина хоть! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 11:52 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttВот ещё пример. Пользователь жмёт на чужой комментарий "Ответить", и долго, вдумчиво выплёскивает то, что у него накопилось к оппоненту. Но в это время оппонент решил, что человечество к его комментарию пока ещё не готово и удаляет своё творение. Пользователь жмёт "Отправить" и... получает матюки в ответ, дескать ты чё такой тупой, пытаешься отвечать на удалённые комментарии. Хотя можно было предложить пользователю создать новый комментарий с отправленным текстом вместо ответа или сохранить в черновики, или отправить личное сообщение... Это невозможно никак сделать с твоим подходом. Никак. Ошибки надо ловить там где их можно (и нужно) обработать. А не рисовать некий универсальный подход, которым можно только задницу подтереть.Ну с чего ты взял, что это невозможно? Всё возможно, просто ты не знаешь как. :-) Ну да. Вот едешь ты на велике, и тут раз -- поворот. В твоей версии ты падаешь, размазываешь себе руки-ноги в кровь, говоришь обёрнутое в InfoException «Блееааать... поворот....», поднимаешься, поворачиваешь велик в нужную сторону, садишься и едешь дальше. Отлично, чо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 11:54 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КПричём тут валидация в UI на клиенте? Мы не об этом сейчас. Если понадобится. UI или не UI - не суть важно. Вот этот мрак Алексей К Код: c# 1. 2. 3. 4. 5. и есть самое что ни на есть валидация. А где и кому она нужна, вторично. Бросаться вот так исключениями - предел беспринципности и ультрарадикализма ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 14:56 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttПро всплывающие подсказки видимо ты не слышал? Хинты на невидимой кнопке, ага. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 15:56 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruВот этот мрак Алексей К Код: c# 1. 2. 3. 4. 5. и есть самое что ни на есть валидация. А где и кому она нужна, вторично. Бросаться вот так исключениями - предел беспринципности и ультрарадикализма Лучше, ага: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Так держать! Молодцы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 16:02 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей Кcodearticles.ruВот этот мрак пропущено... и есть самое что ни на есть валидация. А где и кому она нужна, вторично. Бросаться вот так исключениями - предел беспринципности и ультрарадикализма Лучше, ага: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Так держать! Молодцы! Что за очередной слив дезы, бро? Я давеча рассказывал про пряморукие методы типа нативных IValidatableObject.Validate Чем не водка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 16:06 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttПро всплывающие подсказки видимо ты не слышал? Хинты на невидимой кнопке, ага.Ахаха. Вы уж определитесь hidden или disabled элементы обсуждаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 16:17 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей Кcodearticles.ruВот этот мрак пропущено... и есть самое что ни на есть валидация. А где и кому она нужна, вторично. Бросаться вот так исключениями - предел беспринципности и ультрарадикализма Лучше, ага: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Так держать! Молодцы!Откуда этот говнокод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 16:18 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttПро всплывающие подсказки видимо ты не слышал? Хинты на невидимой кнопке, ага. а зачем хинт на невидимой кнопке? нет кнопки, нет проблем. ты же недавно только бузил по поводу того, что пользователь будет недоволен задисейбелнными контролами, речь шла о них. или ты чего там куришь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 18:03 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Хинты на невидимой кнопке, ага.Ахаха. Вы уж определитесь hidden или disabled элементы обсуждаете.Или серверную логику... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 18:18 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Лучше, ага: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Так держать! Молодцы!Откуда этот говнокод? Лютый код от нелюбителей исключений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 18:20 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttа зачем хинт на невидимой кнопке?Да всё, не зачем, забудь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 18:21 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КhVosttа зачем хинт на невидимой кнопке?Да всё, не зачем, забудь. Эт видимо какой-то новый способ вести дискуссию, можно нести что попало, потом тупо слить. Ну ок, уже забыл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 18:31 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей Кпропущено... Да всё, не зачем, забудь. Эт видимо какой-то новый способ вести дискуссию, можно нести что попало, потом тупо слить. Ну ок, уже забыл.Ну мы ведь не хинты на кнопках обсуждаем, не так ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 18:37 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Лучше, ага: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Так держать! Молодцы!Откуда этот говнокод? Более того, Рихтер так делает, если hVostt ничего не путает . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 18:41 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Откуда этот говнокод? Лютый код от нелюбителей исключений.А конкретнее? Ты его выдумал что-ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 18:52 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Лютый код от нелюбителей исключений.А конкретнее? Ты его выдумал что-ли?Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.10.2014, 18:57 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Господа, позвольте вмешаться в вашу оживленную дискуссию. Код: c# 1. 2. 3. 4. 5. А как надо? Полностью согласен с необходимостью валидации на клиенте, но ведь бизнес-логику может дернуть (в теории) вообще кто угодно. Да хоть пользователь-мерзавец вручную составил запрос. И так получилось, что entity.A > entity.B. Как быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 21:48 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
zzА как надо? Полностью согласен с необходимостью валидации на клиенте, но ведь бизнес-логику может дернуть (в теории) вообще кто угодно. Да хоть пользователь-мерзавец вручную составил запрос. И так получилось, что entity.A > entity.B. Как быть? Давай пока оставим бизнес-логику в покое. Возьмём пример по-проще. var result = Model.A / Model.B; Что делать? Ловить-оборачивать исключения или проверять Model.B на ноль перед выполнением операции? М? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 21:57 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Я за то, чтобы проверить. Проверили, получили ноль. Что делаем дальше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 22:02 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
zzЯ за то, чтобы проверить. Проверили, получили ноль. Что делаем дальше? Даём возможность пользователю исправить 0 на что-нибудь другое. Подсвечиваем конкретное поле, где пользователь "не прав". Может быть даже обойтись и без этого, если логика допускает, при Model.B == 0, сразу записать в result 0. А что делать и "информационным" исключением? Тынкуть пользователя в него мордой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 22:08 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Так проверку мы где делаем, в бизнес-логике? А как сказать контроллеру, что проверка не удалась? Чтобы он как раз и подсветил поле красненьким для пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 22:11 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
zzТак проверку мы где делаем, в бизнес-логике? А как сказать контроллеру, что проверка не удалась? Чтобы он как раз и подсветил поле красненьким для пользователя. Проверка делается на уровне модели. Т.е. за пределами бизнес-логики. Для валидации должны быть предоставлены необходимые для этого инструменты. Например, регистрация пользователя. Можно плеваться исключением на тему того, что такой логин уже занят, или предоставить метод для проверки доступности логина -- тогда можно сделать динамическую валидацию на клиенте и сообщить пользователю, что логин дескать занят и предложить на выбор другой, прямо во время заполнения поля. Это всяко лучше чем "обрадовать" юзера, что логин занят после того как все поля уже были заполнены. Сам контроллер конечно не должен заниматься непосредственно валидацией, эти механизмы выносятся на уровень вью-модели, а контроллер лишь является проводником. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 22:38 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttПроверка делается на уровне модели. Уточню, вью-модели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 22:38 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVostt, подход хороший, но тогда получается, что проверку внутри бизнес-логики вообще не делаем, предполагая, что не можем получить невалидные данные на вход? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 22:43 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
zzА как сказать контроллеру, что проверка не удалась? На счёт того "как сказать", ASP.NET MVC/WebAPI предлагает такое понятие, как ModelState, там есть свойство IsValid, и там же наименования полей и дополнительные подробности. Валидация, биндинг, провайдер значений, всё это существует отдельно, точка сборки -- контроллер (поэтому у него и такое название). При необходимости компоненты обращаются к бизнес-логике. Сама бизнес-логика обязательно внутри должна делать повторную валидацию. Но в целом подразумевается, что в БЛ заталкиваются уже валидные данные, а невалидные данные -- это исключительные ситуации, которые надо лечить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 22:43 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
zzно тогда получается, что проверку внутри бизнес-логики вообще не делаем, предполагая, что не можем получить невалидные данные на вход? Обязательно делаем. И если что-то невалидное, бросаем исключение. Но эта ситуация должна исправляться, чтобы такого небыло. Это дополнительный уровень защиты для нештатных ситуаций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 22:44 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVostt, спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.10.2014, 23:11 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttzzно тогда получается, что проверку внутри бизнес-логики вообще не делаем, предполагая, что не можем получить невалидные данные на вход?Обязательно делаем. И если что-то невалидное, бросаем исключение.Определись уже, делаем или не делаем, а то твоя слабая позиция мало понятна. hVosttНо эта ситуация должна исправляться, чтобы такого небыло. Это дополнительный уровень защиты для нештатных ситуаций.Это основная бизнес-логика системы. Валидация на клиенте - это необязательные бантики, которые ещё и не всегда можно сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 05:26 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttzzА как надо? Полностью согласен с необходимостью валидации на клиенте, но ведь бизнес-логику может дернуть (в теории) вообще кто угодно. Да хоть пользователь-мерзавец вручную составил запрос. И так получилось, что entity.A > entity.B. Как быть? Давай пока оставим бизнес-логику в покое. Возьмём пример по-проще. var result = Model.A / Model.B; Что делать? Ловить-оборачивать исключения или проверять Model.B на ноль перед выполнением операции? М? Код: c# 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 05:30 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
ИМХО валидация - это отдельный от бизнес-логики контур. И с точки зрения SOLID должен инкапсулироваться отдельным набором интерфейсов и классов. Тогда мы легко можем инжектить различную логику валиадции (различный набор проверяемых правил) в различные части системы. Пример: данные в базу может вносить пользователь через десктоп интерфейс, но также они могут прилетать пачками в наш сервис из сторонней системы. Причём пользователь а. может не иметь прав на редактирование всех атрибутов; б. может вводить данные частично (черновик), остаток вводить потом, или передавать другому пользователю(ям) с большими правами и т.п.; в. контролы уже ограничивают ввод по длине, маске, типу и проверять нужно только то, что обязательные поля заполнены. А сервис принимает уже окончательные данные, подготовленные в сторонней системе. Должен проверить каждый элемент в пачке (все атрибуты заполнены, значения корректные, длины строк не превышают максимума и т.п.) и выдать в ответ, что из 100 элементов 98 Accepted, а 2 Rejected с описанием из-за чего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 10:01 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей К, а для тебя придумали System.Diagnostics.Contracts Код: c# 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 10:03 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVostthVosttПроверка делается на уровне модели. Уточню, вью-модели. Правильнее таки модели, у нас же MVC. А что, что твоя модель по сути вью-модель, не суть важно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 10:37 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAИМХО валидация - это отдельный от бизнес-логики контур. И с точки зрения SOLID должен инкапсулироваться отдельным набором интерфейсов и классов. Тогда мы легко можем инжектить различную логику валиадции (различный набор проверяемых правил) в различные части системы. Пример: данные в базу может вносить пользователь через десктоп интерфейс, но также они могут прилетать пачками в наш сервис из сторонней системы. Причём пользователь а. может не иметь прав на редактирование всех атрибутов; б. может вводить данные частично (черновик), остаток вводить потом, или передавать другому пользователю(ям) с большими правами и т.п.; в. контролы уже ограничивают ввод по длине, маске, типу и проверять нужно только то, что обязательные поля заполнены.++ skyANAА сервис принимает уже окончательные данные, подготовленные в сторонней системе. Должен проверить каждый элемент в пачке (все атрибуты заполнены, значения корректные, длины строк не превышают максимума и т.п.)Собственно, это и обсуждается: как пробрасывать ошибку внутри слоёв сервиса и как передать ошибку от сервиса к клиенту. skyANA... и выдать в ответ, что из 100 элементов 98 Accepted, а 2 Rejected с описанием из-за чего.Ну это уже конкретная ситуация, на мой взгляд, не частая. Чаще сохранение данных происходит в одной транзакции, во всяком случае у меня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 10:39 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAИМХО валидация - это отдельный от бизнес-логики контур Начинается... Любители декомпозиции взяли пулемёт. Валидация - это такая же бизнес логика, ничего накручивать не надо. Бери готовый IValidatableObject и хоть в припляс с ним танцуй и инжекть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 10:40 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей К, а для тебя придумали System.Diagnostics.Contracts Код: c# 1. 2. 3. 4. 5. Не нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 10:40 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruВалидация - это такая же бизнес логика.Бизнес-логика на клиенте, ага. Клиентская валидация - это обычно необязательный бантик для удобства пользователя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 10:42 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAАлексей К, а для тебя придумали System.Diagnostics.Contracts Код: c# 1. 2. 3. 4. 5. Не нравится.Чем? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 10:50 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAИМХО валидация - это отдельный от бизнес-логики контур Начинается... Любители декомпозиции взяли пулемёт. Валидация - это такая же бизнес логика, ничего накручивать не надо. Бери готовый IValidatableObject и хоть в припляс с ним танцуй и инжекть.И что в нём готового? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 10:52 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, и ответь на вопрос: зачем в метод Validate передаётся ValidationContext? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 10:55 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANA... и выдать в ответ, что из 100 элементов 98 Accepted, а 2 Rejected с описанием из-за чего.Ну это уже конкретная ситуация, на мой взгляд, не частая. Чаще сохранение данных происходит в одной транзакции, во всяком случае у меня.При чём тут вообще транзакции? В вашей оперативной системе пользователь долго и упорно набивает 100 записей и потом разом их сохраняет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 11:09 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Ну это уже конкретная ситуация, на мой взгляд, не частая. Чаще сохранение данных происходит в одной транзакции, во всяком случае у меня.При чём тут вообще транзакции? В вашей оперативной системе пользователь долго и упорно набивает 100 записей и потом разом их сохраняет?На каждую запись, которая может содержать вложенные записи, обычно отдельная форма редактирования с сохранением в одной транзакции. Транзакции при том, что сохраняется всё или ничего, поэтому сообщение "98 Accepted, а 2 Rejected" - это другой случай для нас достаточно редкий. skyANAАлексей Кпропущено... Не нравится.Чем? :)Обхожусь родными средствами C# (if... throw...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 11:28 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... При чём тут вообще транзакции? В вашей оперативной системе пользователь долго и упорно набивает 100 записей и потом разом их сохраняет?На каждую запись, которая может содержать вложенные записи, обычно отдельная форма редактирования с сохранением в одной транзакции. Транзакции при том, что сохраняется всё или ничего, поэтому сообщение "98 Accepted, а 2 Rejected" - это другой случай для нас достаточно редкий.Задам вопрос иначе: если пользователю за день надо обработать 100 чего-то и в двух случаях он допустит ошибку, то ничего из 100 чего-то не сохранится :) Алексей КskyANAпропущено... Чем? :)Обхожусь родными средствами C# (if... throw...).Хм. Звучит как: не нравится LINQ, обхожусь родными средствами C# (for... foreach...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 12:18 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей Кcodearticles.ruВалидация - это такая же бизнес логика.Бизнес-логика на клиенте, ага. Клиентская валидация - это обычно необязательный бантик для удобства пользователя. Да, а чем тебе не нравится? unobtrusive на клиенте это очень удобно. skyANAИ что в нём готового? :) Это сковорода. Хочешь - жарь, хочешь - не жарь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 12:20 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAИ что в нём готового? :) Это сковорода. Хочешь - жарь, хочешь - не жарь Ну например выше озвучивалась проверка логина пользователя при регистрации. В базе уникальный индекс и Алексей пожарит, перехватив и обернув исключение. А ты как пожаришь на IValidatableObject сковороде? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 12:29 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... На каждую запись, которая может содержать вложенные записи, обычно отдельная форма редактирования с сохранением в одной транзакции. Транзакции при том, что сохраняется всё или ничего, поэтому сообщение "98 Accepted, а 2 Rejected" - это другой случай для нас достаточно редкий.Задам вопрос иначе: если пользователю за день надо обработать 100 чего-то и в двух случаях он допустит ошибку, то ничего из 100 чего-то не сохранится :)Я запутался. :-) skyANAАлексей Кпропущено... Обхожусь родными средствами C# (if... throw...).Хм. Звучит как: не нравится LINQ, обхожусь родными средствами C# (for... foreach...).Нет. Обходиться базовыми средствами C# не получается, поэтому мне нравится LINQ. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 12:46 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruАлексей Кпропущено... Бизнес-логика на клиенте, ага. Клиентская валидация - это обычно необязательный бантик для удобства пользователя. Да, а чем тебе не нравится? unobtrusive на клиенте это очень удобно.Уг. На клиенте только Knockout.Validation . skyANAcodearticles.ruпропущено... Это сковорода. Хочешь - жарь, хочешь - не жарь Ну например выше озвучивалась проверка логина пользователя при регистрации. В базе уникальный индекс и Алексей пожарит, перехватив и обернув исключение. А ты как пожаришь на IValidatableObject сковороде?++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 12:49 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAВ базе уникальный индекс и Алексей пожарит, перехватив и обернув исключение. Ну это феерический бред, даже без комментариев. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:15 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Причем это работает как с сервера, так и с клиента - про ремоут валидацию Хвост уже говорил. Единый центральный класс для валидирования моделей. Что еще нужно-то? Какие исключения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:17 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruПричем это работает как с сервера, так и с клиента - про ремоут валидацию Хвост уже говорил. Единый центральный класс для валидирования моделей. Что еще нужно-то? Какие исключения?Ну как ты без запроса к БД определишь уникальность введённого значения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:20 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, ну то есть отдельный класс, по экземпляру которого будет создан профиль пользователя. Проверку уникальности логина ты кстати не реализовал. Но не в этом суть. Теперь представь, что 100500 профилей пользователей прилетают из сторонней системы и их тоже нужно проверить, но процедуру регистрации проводить не надо, пользователи уже прошли регистрацию в сторонней системе. Надо просто проверить и положить в базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:23 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей Кcodearticles.ruПричем это работает как с сервера, так и с клиента - про ремоут валидацию Хвост уже говорил. Единый центральный класс для валидирования моделей. Что еще нужно-то? Какие исключения?Ну как ты без запроса к БД определишь уникальность введённого значения?Ну он засунет в модель регистрации ссылку на репозиторий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:25 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КСобственно, это и обсуждается: как пробрасывать ошибку внутри слоёв сервиса и как передать ошибку от сервиса к клиенту. Когда наконец ты поймёшь, что "ошибка" и "невалидные данные" -- это вещи кардинально разные, то всё станет на свои места. Для чего придумали исключения? Чтобы была возможность обработать нештатные ситуации. Для обработки данных, полученных от пользователя была придумана валидация. Если пользователь при регистрации ввёл некорректный логин -- это не является ошибкой, это штатная ситуация, которая предусмотрена логикой регистрации пользователя. Ошибка, это попытка вставить запись с некорректным логином, в нормальной ситуации до этого не должно доходить. Но и нельзя полностью полагаться на валидацию. Всегда надо дополнительно проверять данные в бизнес-логике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:34 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Ну как ты без запроса к БД определишь уникальность введённого значения?Ну он засунет в модель регистрации ссылку на репозиторий.Ну будет обработка исключений на уровне валидатора, а не на уровне фильтра контроллера. Это ничего не меняет, внутри модели ошибку обычно удобнее пробрасывать исключением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:39 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КСобственно, это и обсуждается: как пробрасывать ошибку внутри слоёв сервиса и как передать ошибку от сервиса к клиенту. Когда наконец ты поймёшь, что "ошибка" и "невалидные данные" -- это вещи кардинально разные, то всё станет на свои места. Для чего придумали исключения? Чтобы была возможность обработать нештатные ситуации. Для обработки данных, полученных от пользователя была придумана валидация. Если пользователь при регистрации ввёл некорректный логин -- это не является ошибкой, это штатная ситуация, которая предусмотрена логикой регистрации пользователя. Ошибка, это попытка вставить запись с некорректным логином, в нормальной ситуации до этого не должно доходить. Но и нельзя полностью полагаться на валидацию. Всегда надо дополнительно проверять данные в бизнес-логике. При проверке на уникальность перед insert будем делать select, или просто сделаем insert и обработаем ошибку, которую выдала БД? Это можно обсуждать вечно. В моём случае использование исключений существенно упрощает программу - поэтому я их использую. Как только появится вред от исключений - я сразу же откажусь от них. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:44 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КВ моём случае использование исключений существенно упрощает программу - поэтому я их использую.Да ладно. А покажи как ты нарушение уникальности индекса обрабатываешь. Алексей ККак только появится вред от исключений - я сразу же откажусь от них.Ну ну... Код сам везде перепишется и оттестируется :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:47 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КПри проверке на уникальность перед insert будем делать select, или просто сделаем insert и обработаем ошибку, которую выдала БД? Обязательно проверим. Закладывать ошибки, которые сыпятся из БД в работу бизнес-логики будет только совершенно на всю голову отмороженный дегенерат. Алексей КЭто можно обсуждать вечно. В моём случае использование исключений существенно упрощает программу - поэтому я их использую. Как только появится вред от исключений - я сразу же откажусь от них. Переубеждать тебя не собираюсь. Хочется только отметить, что это крайне убогое и отвратительное решение для тех новичков, кто читают топик. Чтобы не повторяли за тобой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:50 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей КВ моём случае использование исключений существенно упрощает программу - поэтому я их использую.Да ладно. А покажи как ты нарушение уникальности индекса обрабатываешь. Это используется на уровне фильтра [api]контроллера. Алексей ККак только появится вред от исключений - я сразу же откажусь от них.Ну ну... Код сам везде перепишется и оттестируется :)[/quot]И не такое бывало. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:52 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей ККак только появится вред от исключений - я сразу же откажусь от них.Ну ну... Код сам везде перепишется и оттестируется :)И не такое бывало. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:54 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КПри проверке на уникальность перед insert будем делать select, или просто сделаем insert и обработаем ошибку, которую выдала БД? Обязательно проверим. Закладывать ошибки, которые сыпятся из БД в работу бизнес-логики будет только совершенно на всю голову отмороженный дегенерат.И причины будут озвучены? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:56 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Да ладно. А покажи как ты нарушение уникальности индекса обрабатываешь. Это используется на уровне фильтра [api]контроллера.Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 13:58 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Это используется на уровне фильтра [api]контроллера.Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а?Уникальность определяется по коду ошибки в SqlException при попытке сделать insert/update. А e-mail тут причём? Разумеется, валидность e-mail определяется не на уровне БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:02 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а?Уникальность определяется по коду ошибки в SqlException при попытке сделать insert/update. А e-mail тут причём? Разумеется, валидность e-mail определяется не на уровне БД.Сори, невнимательно прочитал, секундочку... :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:03 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КИ причины будут озвучены? Причины просты и банальны: целостность данных в БД ≠ целостность бизнес-данных. Это должен понимать даже джуниор, а опытному разработчику смешивать эти понятия непростительно, вплоть до увольнения без выходного пособия. Пусть идёт в говноконторы, коих как я вижу предостаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:06 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Это используется на уровне фильтра [api]контроллера.Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а?В этом случае используется это . Код: c# 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:06 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КИ причины будут озвучены? Причины просты и банальны: целостность данных в БД ≠ целостность бизнес-данных.Из непонятого... Нужен список конкретных негативных эффектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:08 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КВ этом случае используется это . Код: c# 1. 2. 3. 4. 5. 6. Ты уж извини, но это ПОЛНЫЙ п....ц. Если бы у нас во время ревью обнаружилось бы что-то подобное, разраб уже завтра бы уже был выброшен на рынок труда, нах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:08 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КНу как ты без запроса к БД определишь уникальность введённого значения? Запрос в БД пойдет из пост-контроллера (возможен аякс). Причем тут модель? skyANAcodearticles.ru, ну то есть отдельный класс, по экземпляру которого будет создан профиль пользователя. Проверку уникальности логина ты кстати не реализовал. Но не в этом суть. Я тебе идею написал, а не реализацию конкретной задачи. skyANAТеперь представь, что 100500 профилей пользователей прилетают из сторонней системы и их тоже нужно проверить, но процедуру регистрации проводить не надо, пользователи уже прошли регистрацию в сторонней системе. Надо просто проверить и положить в базу. Если в процессе участвуют n-систем, необходим единый шлюз. Например, REST сервис. В методе валидации модели (или через ремоут атрибут) у тебя будет на лету дергаться сервис, который будет делать проверку. В чем проблема? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:08 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttАлексей КВ этом случае используется это . Код: c# 1. 2. 3. 4. 5. 6. Ты уж извини, но это ПОЛНЫЙ п....ц. Если бы у нас во время ревью обнаружилось бы что-то подобное, разраб уже завтра бы уже был выброшен на рынок труда, нах.У меня это решение работает уже больше 10-и лет, ещё со времён C++ Builder. И пофиг мне на эстетические чувства каких-то там теоретиков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:10 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruАлексей КНу как ты без запроса к БД определишь уникальность введённого значения? Запрос в БД пойдет из пост-контроллера (возможен аякс). Причем тут модель?Да я про модель в другом понимании. Ладно, проехали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:11 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей К, почитай тут (Application Architecture Guide v2): ВалидацияЭффективная стратегия проверки пользовательского ввода и данных имеет критически важное значение для безопасности и корректной работы приложения. Определите правила валидации пользовательского ввода и бизнес-правила, существующие в слое представления. При проектировании стратегии проверки пользовательского ввода и данных руководствуйтесь следующими рекомендациями: Проверка пользовательского ввода должна проводиться в слое представления, тогда как проверка на соответствие бизнес-правилам – в бизнес-слое. Однако если бизнес-слой и слой представления разнесены физически, логика проверки на соответствие бизнес-правилам должна дублироваться в слое представления для улучшения удобства использования и уменьшения времени отклика. Этого можно достичь с помощью метаданных или путем применения одинаковых компонентов правил проверки в обоих слоях. Проектируйте стратегию проверки, руководствуясь целью ограничить, предотвратить и очистить злонамеренный ввод. Рассматривайте шаблоны и библиотеки сторонних производителей, которые могут помочь в реализации проверки. Определяйте бизнес-правила, обеспечивающие проверку, такие как границы транзакции, и реализуйте достаточно глубокую проверку, чтобы гарантировать выполнение этих правил. Убедитесь, что правильно обрабатываете ошибки валидации и избегайте предоставления конфиденциальных данных в сообщениях об ошибках. Кроме того, обеспечьте протоколирование сбоев при проверке, что поможет при выявлении злонамеренных действий. Какие нах исключения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КИз непонятого... Нужен список конкретных негативных эффектов. Что за глупый вопрос? Возьмём того же многострадального пользователя. Очень часто вместо реального удаления записи используется поле с признаком удаления. Удалили пользователя с логином "mefazavr", значит логин должен освободиться. При наличии уникального индекса, логин останется "занятым". Если бы у тебя был опыт, ты бы такие глупости бы не спрашивал. Никогда целостность БД не используется для валидации бизнес-данных. Никогда. Только в рядах совсем уж начинающих сопливых новичков. Но это обычно с опытом проходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruАлексей К, почитай тут (Application Architecture Guide v2): ВалидацияЭффективная стратегия проверки пользовательского ввода и данных имеет критически важное значение для безопасности и корректной работы приложения. Определите правила валидации пользовательского ввода и бизнес-правила, существующие в слое представления. При проектировании стратегии проверки пользовательского ввода и данных руководствуйтесь следующими рекомендациями: Проверка пользовательского ввода должна проводиться в слое представления, тогда как проверка на соответствие бизнес-правилам – в бизнес-слое. Однако если бизнес-слой и слой представления разнесены физически, логика проверки на соответствие бизнес-правилам должна дублироваться в слое представления для улучшения удобства использования и уменьшения времени отклика. Этого можно достичь с помощью метаданных или путем применения одинаковых компонентов правил проверки в обоих слоях. Проектируйте стратегию проверки, руководствуясь целью ограничить, предотвратить и очистить злонамеренный ввод. Рассматривайте шаблоны и библиотеки сторонних производителей, которые могут помочь в реализации проверки. Определяйте бизнес-правила, обеспечивающие проверку, такие как границы транзакции, и реализуйте достаточно глубокую проверку, чтобы гарантировать выполнение этих правил. Убедитесь, что правильно обрабатываете ошибки валидации и избегайте предоставления конфиденциальных данных в сообщениях об ошибках. Кроме того, обеспечьте протоколирование сбоев при проверке, что поможет при выявлении злонамеренных действий. Какие нах исключения? "И пофиг мне на эстетические чувства каких-то там теоретиков" (ц) Я зы: не читал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAпропущено... Мдя. И как ты определяешь, что вот тут нарушение уникальности логина, а вот там e-mail-а?В этом случае используется это . Код: c# 1. 2. 3. 4. 5. 6. О как. А скрипт создания индекса как оформлен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 14:16 |
|
||
|
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 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAkmawпропущено... согласен с Алексей К. исключения не более чем многоуровневый ретурн. Делаем прикладной MyException и кидаем его. В соответствующих местах ловим. А серьезный сбой - это баг или полный фатал. Тут уже ничего не поможетА конкретнее? В каких случаях делаем, а в каких нет? как по мне, я делаю для всего пользовательского ввода в слое бизнес-логики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 15:10 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
kmawskyANAпропущено... А конкретнее? В каких случаях делаем, а в каких нет? как по мне, я делаю для всего пользовательского ввода в слое бизнес-логикиЗамечательно. Возвращаемся к примеру: а. вместо пользователя сторонний сервис, что "вводит" разом 100500 сущностей; б. вторая сущность в наборе не валидная. Что происходит с оставшимися 100498-ю? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 15:15 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAkmawпропущено... как по мне, я делаю для всего пользовательского ввода в слое бизнес-логикиЗамечательно. Возвращаемся к примеру: а. вместо пользователя сторонний сервис, что "вводит" разом 100500 сущностей; б. вторая сущность в наборе не валидная. Что происходит с оставшимися 100498-ю? это какая-то пакетная обработка. её логика будет зависеть от контекста задачи, но уж точно будет отличаться от ввода одной сущности через гуй ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 15:18 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAСлабенькая отмаза. Нормальная отмаза skyANAЭто как ты читал пример, что представил себе View Model вместо Domain Model и MVC приложение? Какая Domain Model, акстись? Её в MVC вообще может не быть MVC наиболее частные ошибки MVCНо в объектно-ориентированном программировании используется активная модель MVC, где модель — это не только совокупность кода доступа к данным и СУБД, но и вся бизнес-логика. Следует отметить возможность модели инкапсулировать в себе другие модели. В свою очередь, контроллеры представляют собой лишь элементы системы, в чьи непосредственные обязанности входит приём данных из запроса и передача их другим элементам системы. Только в этом случае контроллер становится «тонким» и выполняет исключительно функцию связующего звена (glue layer) между отдельными компонентами системы. skyANAcodearticles.ruпропущено... 1. Я говорил, что аякс возможет, читай внимательнее. Какая тебе разница, как я пошлю тебе запрос с данными в контроллер, постом формы или аяксом? Начинай уже думать что ли... 2. Валидация реализована только в IValidatableObject.Validate. Именно этот метод ответит на все вопросы. А что внутри его, не суть важно. Ты обрисовал пример, когда тебе нужна валидация и другим системам - на что я тебе предложил обобщить валидацию в едином сервисе. Это не обязательно должен быть сервис, это может быть всё что угодно, хранимая процедура, DLL, почтовый голубь. В чем непонимание?Всё, мне просто смешно уже с тебя. Напиши реальный проект, а потом приходи с советами. Аяксом он собрался опрашивать единый метод IValidatableObject.Validate. У тебя пользователь вводит логин, остальные поля в этот момент ещё пустые, подумай над этим. А пункт 2 в очередной раз подтверждает мои размышления. Ну коли смешно, попей водички, отпустит. Проект написан и не один. А приходить ли с советами, я еще подумаю. И это мне решать, а не тебе, извини. Далее. Включи уже свой мозг не тупи. Аяксом не опрашивается IValidatableObject.Validate, ты укурен? Аяксом оправляется пост запрос с данными. Контроллер маппит эти данные на модель и дальше всё идет по тому алгоритму, что я написал выше. Если пользователь вводи пароль, а поля остальные пустые, сработает клиентская unobtrusive validation и не даст отправить запрос. Во-вторых, даже если js выключен, произойдет на сервере та же валидация и не пропустит модель дальше. И причем тут пароль, ты выше спрашивал про валидацию учетной записи и n-приложений, которые используют такую же логику. Теперь тебя понесло в пользователь вводит логин, остальные поля в этот момент ещё пустые. У меня закрадываются сомнения в том, что ты вообще кодер. Небось кирпичи носишь на стройке. Вот напиши хотя бы один проект, а потом примеры приводи. Что не так с пунктом 2? Ты вообще понял, о чем я писал выше? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 15:28 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANA, поищи поиском , слово "домен" чуждо в этой статье Если у тебя доменная модель в MVC, то тебе точно пора идти на стройку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 15:29 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
kmawskyANAпропущено... Замечательно. Возвращаемся к примеру: а. вместо пользователя сторонний сервис, что "вводит" разом 100500 сущностей; б. вторая сущность в наборе не валидная. Что происходит с оставшимися 100498-ю? это какая-то пакетная обработка. её логика будет зависеть от контекста задачи, но уж точно будет отличаться от ввода одной сущности через гуйВот! А как же быть с тем, что "в слое бизнес-логики" уже зашита какая-то проверка? Костыль лепить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 15:40 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAkmawпропущено... это какая-то пакетная обработка. её логика будет зависеть от контекста задачи, но уж точно будет отличаться от ввода одной сущности через гуйВот! А как же быть с тем, что "в слое бизнес-логики" уже зашита какая-то проверка? Костыль лепить? пакетная обработка и сохранение одной сущности настолько разные задачи, что я бы не стал ломать голову как их строить из единых кирпичей. выражаясь по вашему, прикрутил бы костыль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 15:49 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, ты выглядишь просто глупо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 15:50 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
kmawskyANAпропущено... Вот! А как же быть с тем, что "в слое бизнес-логики" уже зашита какая-то проверка? Костыль лепить? пакетная обработка и сохранение одной сущности настолько разные задачи , что я бы не стал ломать голову как их строить из единых кирпичей. выражаясь по вашему, прикрутил бы костыльВ чём же разница между тем, что пользователь за день введёт 100 сущностей в систему и сервисом, что это сделает за один присест? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 15:52 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAkmawпропущено... пакетная обработка и сохранение одной сущности настолько разные задачи , что я бы не стал ломать голову как их строить из единых кирпичей. выражаясь по вашему, прикрутил бы костыльВ чём же разница между тем, что пользователь за день введёт 100 сущностей в систему и сервисом, что это сделает за один присест? в упрощенном варианте можно считать, что пакетная обработка - это итерация по одиночной. и наверное, так бывает. я с таким не сталкивался: пакетная была всегда связана с интеграцией и 100500 условий там было в дополнение к тому, что надо сохранить сущность. к тому же ексепшн не обязательно бросать сразу, можно накопить всех ошибок, сохранить их в ексепшн и кинуть в конце ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 15:55 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
kmawskyANAпропущено... В чём же разница между тем, что пользователь за день введёт 100 сущностей в систему и сервисом, что это сделает за один присест? в упрощенном варианте можно считать, что пакетная обработка - это итерация по одиночной. и наверное, так бывает. я с таким не сталкивался: пакетная была всегда связана с интеграцией и 100500 условий там было в дополнение к тому, что надо сохранить сущность.Дак а я о чём? О том, что тут одна валидация, тут другая. Чтобы не лепить костыли, она выносится из бизнес-логики в отдельный контур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 16:02 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ru, ты выглядишь просто глупо. И это говорит человек, которому нужно всё по 20 раз повторять, который не может понять сути о чем тут толкуют? Аплодирую стоя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 16:05 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAcodearticles.ru, ты выглядишь просто глупо. И это говорит человек, которому нужно всё по 20 раз повторять, который не может понять сути о чем тут толкуют? Аплодирую стоя.Опять выглядишь глупо. Я прекрасно тебя понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 16:09 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, ты конечно можешь думать, что твоя шутка про поискать слово "домен" - это искромётный юмор. Но на самом деле это выглядит идиотски. Думаю ты прекрасно знаешь, что термин Domain Model переводится как Модель Предметной Области, и как это связано с бизнес-логикой приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 16:13 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAОпять выглядишь глупо. Я прекрасно тебя понимаю. А зачем тогда пишешь всякие глупости про вызов IValidatableObject.Validate из аякса? Десятый раз повторяю, даже в дефолтном mvc солюшене есть демо-модель регистрации с атрибутами валидации. Всё это отлично работает. Для более сложной валидации, типа проверки учетной записи на дубликат, есть дополнительные штатные средства типа IDataErrorInfo и IValidatableObject. Их и используем. В чем проблемы? skyANAcodearticles.ru, ты конечно можешь думать, что твоя шутка про поискать слово "домен" - это искромётный юмор. Но на самом деле это выглядит идиотски. Думаю ты прекрасно знаешь, что термин Domain Model переводится как Модель Предметной Области, и как это связано с бизнес-логикой приложения. Друже, да нету никакой предметной области, забудь про неё. Есть тупая модель, которая скармливается представлению через разоровский модификатор @model. http://msdn.microsoft.com/en-us/library/ff649643.aspx Model. The model manages the behavior and data of the application domain, responds to requests for information about its state (usually from the view), and responds to instructions to change state (usually from the controller). Черным по-белому написано, что модель управляет поведением и данными прикладной области, отвечает на запросы о предоставлении информации о ее состоянии, и отвечает на инструкции контроллера для изменения состояния. Модель в MVC может много чего. Это не просто "Модель Предметной Области". Хватит уже чушь нести! Какая нахер предметная область если у меня такая MVC модель? Код: c# 1. 2. 3. 4. 5. Какую предметную область несет в себе этот файл, который маппится в модель? Атрибуты тоже чисто mvc-шные. Да много каких гвоздей можно забить сюда. Какая нахер предметная область?! Ты уже достал меня своей тупостью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 16:43 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, где я писал глупости? Зачем ты мне тут про MVC-то рассказываешь? Ты мой пример не понял? Ты не понял что если к моему примеру добавить ещё и MVC морду, то там будет таже бизнес-логика, что и в десктопе, что и в сервисе? Ты не понимаешь, что используется одна и таже бизнес-логика и в десктопе, и в сервисе, и в MVC приложении, но разная валидация? Ты вообще понимаешь, что такое SOLID? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 16:53 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruДруже, да нету никакой предметной области, забудь про неё. Есть тупая модель, которая скармливается представлению через разоровский модификатор @model. @model это же вью-модель, а не М из MVC. контроллер берёт данные из M и отдаёт их V (попутна конвертя их во ViewModel) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 16:59 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruДесятый раз повторяю, даже в дефолтном mvc солюшене есть демо-модель регистрации с атрибутами валидации. Всё это отлично работает. Для более сложной валидации, типа проверки учетной записи на дубликат, есть дополнительные штатные средства типа IDataErrorInfo и IValidatableObject. Их и используем. В чем проблемы?Покажи код того action, что обрабатывает посланный аяксом codearticles.ruпост запрос формы, данные смапились в модель, модель упала в метод контроллера, контроллер опросил ModelState.IsValid, дернулся автоматом IValidatableObject.Validateи клиентский код, что парсит результат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:09 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Сигнатура action тоже интересует, а то вдруг там вместо Register хитрым образом окажется другой тип :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:13 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ru, где я писал глупости? Выше ты писал глупости. Сразу после того, как я озвучил тебе банальный алгоритм. Тебя понесло куда-то в лес. skyANAЗачем ты мне тут про MVC-то рассказываешь? А про что мне тебе рассказывать? Про дельфи? skyANAТы мой пример не понял? Я тебе уже и решение расписал, и разжевал на пальцах. Разве что в рот еду не положил. А ты меня спрашиваешь, понял ли я твой пример. Ты комичен, друх. skyANAТы не понял что если к моему примеру добавить ещё и MVC морду, то там будет таже бизнес-логика, что и в десктопе, что и в сервисе? Ты не понимаешь, что используется одна и таже бизнес-логика и в десктопе, и в сервисе, и в MVC приложении, но разная валидация? Ты вообще понимаешь, что такое SOLID? Мля, какой же ты трудный... hVostt@model это же вью-модель, а не М из MVC. контроллер берёт данные из M и отдаёт их V (попутна конвертя их во ViewModel) Нету в MVC никаких вью моделей. Есть модель, вью и контроллер. skyANAcodearticles.ruДесятый раз повторяю, даже в дефолтном mvc солюшене есть демо-модель регистрации с атрибутами валидации. Всё это отлично работает. Для более сложной валидации, типа проверки учетной записи на дубликат, есть дополнительные штатные средства типа IDataErrorInfo и IValidatableObject. Их и используем. В чем проблемы?Покажи код того action, что обрабатывает посланный аяксом [HttpPost] Код: c# 1. 2. 3. 4. codearticles.ruпост запрос формы, данные смапились в модель, модель упала в метод контроллера, контроллер опросил ModelState.IsValid, дернулся автоматом IValidatableObject.Validateи клиентский код, что парсит результат.[/quot] Мне лень тебе писать очевидные банальные вещи. А клиентского кода и нет, почему ты решил, что он должен быть? А если нужен клиентский код, то ты не в состоянии отправить через $.post запрос и принять ответ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:29 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
AccountController Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. RegisterViewModel Код: 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. Всё. За 1 минуту написал тебе валидный код, без исключений и прочего шлака. Всё работает штатно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:38 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruМне лень тебе писать очевидные банальные вещи. А клиентского кода и нет, почему ты решил, что он должен быть? А если нужен клиентский код, то ты не в состоянии отправить через $.post запрос и принять ответ?Слив засчитан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:44 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruНету в MVC никаких вью моделей. Есть модель, вью и контроллер. В теории (говоря о паттерне MVC) нет. А в реализации есть, смысл открещиваться? Из модели берётся User, мапится в UserViewModel и отдаётся во вью. Что по-твоему есть UserViewModel -- модель? А User тогда что такое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:47 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruМне лень тебе писать очевидные банальные вещи. А клиентского кода и нет, почему ты решил, что он должен быть? А если нужен клиентский код, то ты не в состоянии отправить через $.post запрос и принять ответ?Слив засчитан. Слей себе мозги уже. Реально твоя тупость неискоренима. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:47 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttcodearticles.ruНету в MVC никаких вью моделей. Есть модель, вью и контроллер. В теории (говоря о паттерне MVC) нет. А в реализации есть, смысл открещиваться? Из модели берётся User, мапится в UserViewModel и отдаётся во вью. Что по-твоему есть UserViewModel -- модель? А User тогда что такое? Так речь именно о паттерне MVC. А по факту мы имеем вью модель в качестве модели MVC. Об этом я и писал выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:48 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAпропущено... Слив засчитан. Слей себе мозги уже. Реально твоя тупость неискоренима.В какой момент в твоём примере происходит аякс запрос к методу Register для проверки существования логина? Нет ведь там никакого аякса, признайся :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:51 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruТак речь именно о паттерне MVC. А по факту мы имеем вью модель в качестве модели MVC. Об этом я и писал выше. Я понял, ты вью модель обозвал моделью в этом паттерне. Если UserViewModel, тогда User что такое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:54 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttЯ понял, ты вью модель обозвал моделью в этом паттерне. Если UserViewModel, тогда User что такое? Поправка. Если UserViewModel -- это модель, тогда User что такое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:55 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVostt, и UserManager тоже интересно у нашего великолепного МСУ, что такое? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:56 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruпропущено... Слей себе мозги уже. Реально твоя тупость неискоренима.В какой момент в твоём примере происходит аякс запрос к методу Register для проверки существования логина? Нет ведь там никакого аякса, признайся :) Слушай, ты укурен что ли? Нету аякса! С какого перепуга он должен быть? Ты читаешь каким местом сообщения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:56 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttcodearticles.ruТак речь именно о паттерне MVC. А по факту мы имеем вью модель в качестве модели MVC. Об этом я и писал выше. Я понял, ты вью модель обозвал моделью в этом паттерне. Если UserViewModel, тогда User что такое? UserViewModel - это модель в терминах MVC приложения. А что такое User, я не знаю. Ты не написал такого класса и есть ли такой класс, откуда мне знать. Возможно User, это прокси класс контекста EF. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:58 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAhVostt, и UserManager тоже интересно у нашего великолепного МСУ, что такое? :) http://msdn.microsoft.com/en-us/library/dn613290(v=vs.108).aspx ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:58 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAпропущено... В какой момент в твоём примере происходит аякс запрос к методу Register для проверки существования логина? Нет ведь там никакого аякса, признайся :) Слушай, ты укурен что ли? Нету аякса! С какого перепуга он должен быть? Ты читаешь каким местом сообщения?Я читаю глазами, а ты точно задницей. Я тебя просил привести код action, что обрабатывает тот запрос, про который ты трындел, что он послан аяксом. А ты в итоге слился и ещё что-то про $.post при этом пукнул ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 17:59 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAhVostt, и UserManager тоже интересно у нашего великолепного МСУ, что такое? :) http://msdn.microsoft.com/en-us/library/dn613290(v=vs.108).aspx А теперь процитируем тебя же: "модель — это не только совокупность кода доступа к данным и СУБД, но и вся бизнес-логика". Так что же такое UserManager в терминах модель, не модель? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 18:00 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruпропущено... Слушай, ты укурен что ли? Нету аякса! С какого перепуга он должен быть? Ты читаешь каким местом сообщения?Я читаю глазами, а ты точно задницей. Я тебя просил привести код action, что обрабатывает тот запрос, про который ты трындел, что он послан аяксом. А ты в итоге слился и ещё что-то про $.post при этом пукнул Ты в танке. Читай 20 раз про то, что я писал 16681912 МСУЗапрос в БД пойдет из пост-контроллера (возможен аякс) Прочитай еще 30 раз. Теперь до тебя дошло или еще нужно прочитать 50 раз? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 18:00 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruпропущено... http://msdn.microsoft.com/en-us/library/dn613290(v=vs.108).aspx А теперь процитируем тебя же: "модель — это не только совокупность кода доступа к данным и СУБД, но и вся бизнес-логика". Так что же такое UserManager в терминах модель, не модель? Нет, UserManager - это не модель. Это сервис авторизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 18:02 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruUserViewModel - это модель в терминах MVC приложения. А что такое User, я не знаю. Ты не написал такого класса и есть ли такой класс, откуда мне знать. Возможно User, это прокси класс контекста EF. Ещё раз. Действие контроллера UserController.Edit(int userId) с помощью UserManager получает пользвателя по userId, экземпляр класса User. Затем он маппит его в экземпляр класса UserViewModel и отдаёт его View. Ты говоришь, что UserViewModel -- это модель. Тогда User и UserManager -- что такое? Они не вписываются в паттерн MVC? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 18:02 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAА ты в итоге слился и ещё что-то про $.post при этом пукнул Если ты через $.post не можешь вызать метод контроллера, то я вообще не понимаю, о чем с тобой можно дальше говорить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 18:03 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAпропущено... Я читаю глазами, а ты точно задницей. Я тебя просил привести код action, что обрабатывает тот запрос, про который ты трындел, что он послан аяксом. А ты в итоге слился и ещё что-то про $.post при этом пукнул Ты в танке. Читай 20 раз про то, что я писал 16681912 МСУЗапрос в БД пойдет из пост-контроллера (возможен аякс) Прочитай еще 30 раз. Теперь до тебя дошло или еще нужно прочитать 50 раз? Дурик, вот я тебя конкретно для случая, выделенного красным, попросил код привести. Твой метод Register для этого не подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 18:04 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttcodearticles.ruUserViewModel - это модель в терминах MVC приложения. А что такое User, я не знаю. Ты не написал такого класса и есть ли такой класс, откуда мне знать. Возможно User, это прокси класс контекста EF. Ещё раз. Действие контроллера UserController.Edit(int userId) с помощью UserManager получает пользвателя по userId, экземпляр класса User. Затем он маппит его в экземпляр класса UserViewModel и отдаёт его View. Ты говоришь, что UserViewModel -- это модель. Тогда User и UserManager -- что такое? Они не вписываются в паттерн MVC? UserViewModel - это модель для представления MVC. User - это тупая поко, dto или кодогенерированная прокся. Никакой логики. UserManager - это сервис авторизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 18:06 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruhVosttпропущено... Ещё раз. Действие контроллера UserController.Edit(int userId) с помощью UserManager получает пользвателя по userId, экземпляр класса User. Затем он маппит его в экземпляр класса UserViewModel и отдаёт его View. Ты говоришь, что UserViewModel -- это модель. Тогда User и UserManager -- что такое? Они не вписываются в паттерн MVC? UserViewModel - это модель для представления MVC. User - это тупая поко, dto или кодогенерированная прокся. Никакой логики. UserManager - это сервис авторизации.Ещё раз процетируем тебя же: "модель — это ... совокупность кода доступа к данным и СУБД, ... и вся бизнес-логика" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 18:08 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAДурик, вот я тебя конкретно для случая, выделенного красным, попросил код привести. Твой метод Register для этого не подходит. Врёшь однако, как всегда. Ты написал вот эту глупость skyANAКод покажи. А то сначала ты предлагаешь базу дёргать аяксом, а потом тут же предлагаешь в модели дёргать сервис :) Потом я тебе расписал алгоритм. Потом ты начал тупить про то, что "появился второй запрос ещё и в модели" . Так что не прикрывайся аяксом, ты изначально начал гнать какую-то ахинею. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 18:08 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAДурик, вот я тебя конкретно для случая, выделенного красным, попросил код привести. Твой метод Register для этого не подходит. Врёшь однако, как всегда. Ты написал вот эту глупость skyANAКод покажи. А то сначала ты предлагаешь базу дёргать аяксом, а потом тут же предлагаешь в модели дёргать сервис :) Потом я тебе расписал алгоритм. Потом ты начал тупить про то, что "появился второй запрос ещё и в модели" . Так что не прикрывайся аяксом, ты изначально начал гнать какую-то ахинею.Я ничего не гнал, я просил код, как ты дёргаешь проверку существования логина аяксом. И тогда, и потом. А ты так и не осилил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 18:10 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruUserViewModel - это модель для представления MVC. User - это тупая поко, dto или кодогенерированная прокся. Никакой логики. UserManager - это сервис авторизации. из вики Модель (англ. Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать. какие знания представляют сабой вью-модель? это просто класс-контейнер для передачи данных во вью. абсолютно с тем же успехом можно передать данные во ViewData или напрямую DTO. к тому же вью-модель, а именно UserViewModel, как раз таки СОДЕРЖИТ информацию о том, как эти данные визуализировать (UIHint). я не понимаю, ты по серьёзному вью-модель считаешь моделью (буква М) из паттерна MVC? удивляешь ты меня иногда... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 18:11 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttcodearticles.ruUserViewModel - это модель для представления MVC. User - это тупая поко, dto или кодогенерированная прокся. Никакой логики. UserManager - это сервис авторизации. из вики Модель (англ. Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать. какие знания представляют сабой вью-модель? это просто класс-контейнер для передачи данных во вью. абсолютно с тем же успехом можно передать данные во ViewData или напрямую DTO. к тому же вью-модель, а именно UserViewModel, как раз таки СОДЕРЖИТ информацию о том, как эти данные визуализировать (UIHint). я не понимаю, ты по серьёзному вью-модель считаешь моделью (буква М) из паттерна MVC? удивляешь ты меня иногда...Да жопой он виляет, ты же знаешь :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 18:13 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAЯ ничего не гнал, я просил код, как ты дёргаешь проверку существования логина аяксом. И тогда, и потом. А ты так и не осилил. так а чё там делов-то? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. моделька Код: c# 1. 2. 3. 4. 5. 6. 7. 8. а вот Алексей и Ко. предлагают вот такой вариант: бугагага ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 20:57 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttа вот Алексей и Ко. предлагают вот такой вариант: ну и что? деньги не пахнут (с) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 21:11 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Изопропилну и что? деньги не пахнут (с) ..но на их запах слетаются многие ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 22:16 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Алексей КskyANAАлексей К, а для тебя придумали System.Diagnostics.Contracts Код: c# 1. 2. 3. 4. 5. Не нравится.Вот, почитай для начала: Программирование по контракту в .NET Framework 4 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 22:57 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAАлексей Кпропущено... Не нравится.Вот, почитай для начала: Программирование по контракту в .NET Framework 4 . для программирования по контракту совсем не обязательно тянуть какую-то инфраструктуру. очень просто все: проверяем допустимость состояния DTO - и кидаем пользовательский ексепшн "нарушения контракта". ну или проверяем какие-то пост состояния и т.п., если все сложней. это просто договоренность. наиболее просто она реализуется именно на основе ексепшнов. всякие атрибуты валидации от лукавого ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 23:35 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttskyANAЯ ничего не гнал, я просил код, как ты дёргаешь проверку существования логина аяксом. И тогда, и потом. А ты так и не осилил. так а чё там делов-то? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. моделька Код: c# 1. 2. 3. 4. 5. 6. 7. 8. а вот Алексей и Ко. предлагают вот такой вариант: бугагага атрибуты в данном случае нафиг не нужная муть. только размазывание кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 23:36 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
kmawskyANAпропущено... Вот, почитай для начала: Программирование по контракту в .NET Framework 4 . для программирования по контракту совсем не обязательно тянуть какую-то инфраструктуруПрости, что тянуть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 23:36 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAkmawпропущено... для программирования по контракту совсем не обязательно тянуть какую-то инфраструктуруПрости, что тянуть? микрософт предлагает какую-то библиотеку для более удобного юзания контрактов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 23:37 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
kmawskyANAпропущено... Прости, что тянуть? микрософт предлагает какую-то библиотеку для более удобного юзания контрактовбиблиотека Code Contracts уже расположена в ядре .NET Framework, так что не знаю, что Вы там собрались куда-то тянуть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 23:42 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
kmaw, Ви есть знатный тролль, сударь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.10.2014, 23:45 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
kmawисключения не более чем многоуровневый ретурн.++ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 07:55 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Везёт вам, кроме прикладного кода, где исключение - это многоуровневый ретурн, ничего писать не надо. Вот только не понятно, почему при этом мои задачи обзываются частным случаем :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 08:01 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAВезёт вам..."Везёт сильнейшим" (ц) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 08:36 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruпропущено... Врёшь однако, как всегда. Ты написал вот эту глупость пропущено... Потом я тебе расписал алгоритм. Потом ты начал тупить про то, что "появился второй запрос ещё и в модели" . Так что не прикрывайся аяксом, ты изначально начал гнать какую-то ахинею.Я ничего не гнал, я просил код, как ты дёргаешь проверку существования логина аяксом. И тогда, и потом. А ты так и не осилил. Не пецди. Ты не просил "код, как я дёргаю проверку существования логина аяксом". Ты просто просил код. Код моего алгоритма. Я обвинил тебя в тупости и еще раз описал этот алгоритм на словах. Ты опять начал тупить. Тебе всё нужно кодом объяснять? Думалка не работает? Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. Всё, метод контроллера тот же самый. Ты долго будешь включать дурачка? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 10:23 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttкакие знания представляют сабой вью-модель? это просто класс-контейнер для передачи данных во вью. абсолютно с тем же успехом можно передать данные во ViewData или напрямую DTO. к тому же вью-модель, а именно UserViewModel, как раз таки СОДЕРЖИТ информацию о том, как эти данные визуализировать (UIHint). я не понимаю, ты по серьёзному вью-модель считаешь моделью (буква М) из паттерна MVC? удивляешь ты меня иногда... Не суть, что и куда можно передать. В терминологии MVC нету никаких вью моделей. Нужно отталкиваться от этого. Вью модель есть в MVVM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 10:24 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruНе суть, что и куда можно передать. В терминологии MVC нету никаких вью моделей. Нужно отталкиваться от этого. Вью модель есть в MVVM. В случае ASP.NET MVC, то что передаётся в @model, это вью модель (не в том понимании, как в MVVM). Хотя и не обязательно применять этот термин, но он очень удобен для понимания, чего передаётся во вью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 11:27 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAпропущено... Я ничего не гнал, я просил код, как ты дёргаешь проверку существования логина аяксом. И тогда, и потом. А ты так и не осилил. Не пецди. Ты не просил "код, как я дёргаю проверку существования логина аяксом". Ты просто просил код. Код моего алгоритма. Я обвинил тебя в тупости и еще раз описал этот алгоритм на словах. Ты опять начал тупить. Тебе всё нужно кодом объяснять? Думалка не работает? Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. Всё, метод контроллера тот же самый. Ты долго будешь включать дурачка? Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Думалка у меня работает а у тебя нет. Ты понимаешь, что ты хрень написал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 12:24 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttcodearticles.ruНе суть, что и куда можно передать. В терминологии MVC нету никаких вью моделей. Нужно отталкиваться от этого. Вью модель есть в MVVM. В случае ASP.NET MVC, то что передаётся в @model, это вью модель (не в том понимании, как в MVVM). Хотя и не обязательно применять этот термин, но он очень удобен для понимания, чего передаётся во вью. Что, что передается в @model, это модель и ничто иное. http://www.asp.net/mvc/tutorials/mvc-5/introduction/accessing-your-models-data-from-a-controller Я не спорю про разумность термина, но если говорить в контексте mvc, это модель. skyANAДумалка у меня работает а у тебя нет. Ты понимаешь, что ты хрень написал? Думалки у тебя никогда не было, всегда приходилось по 500 раз разжевывать. Ты хоть понимаешь, что это 100% рабочий код? А то, что модель на js туда упала - это артефакты вызова $.ajax. Всё-равно вся форма упадет в контроллер. Вопросы остались или будешь дальше тупить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 12:33 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruДумалки у тебя никогда не было, всегда приходилось по 500 раз разжевывать. Ты хоть понимаешь, что это 100% рабочий код?Ахаха. Первое что ты получишь, это: The required anti-forgery form field "__RequestVerificationToken" is not present. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 12:40 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, думал, что если в стандартном шаблоне пару строк дописать, то 100% заработает? И сел в лужу. Вот это я и хотел увидеть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 12:42 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruЯ не спорю про разумность термина, но если говорить в контексте mvc, это модель. Как же модель? Именно в терминах MVC, модель это как раз бизнес-логика, откуда приходят данные и куда они в итоге заталкиваются. Или что ты имеешь в виду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 12:45 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, второе: .text() вернёт тебе пустоту, а не значение из инпута. Необходимо использовать .val(). Так что твой 100% рабочий код ни фига не перадаёт на сервер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 12:51 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Третье: твой JSON.stringify(model) ни фига не замапится в модель, т.к. надо передавать Email=test@test.tu, а не { "Email": "test@test.tu" }. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 12:56 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruДумалки у тебя никогда не было, всегда приходилось по 500 раз разжевывать. Ты хоть понимаешь, что это 100% рабочий код?Ахаха. Первое что ты получишь, это: The required anti-forgery form field "__RequestVerificationToken" is not present. Садись, двойка. Не получаю я этого. skyANAcodearticles.ru, думал, что если в стандартном шаблоне пару строк дописать, то 100% заработает? И сел в лужу. Вот это я и хотел увидеть Сел, написал и 100% работает. Лужа - для тебя. Обтекай, а не выдумывай сказки про RequestVerificationToken skyANAcodearticles.ru, второе: .text() вернёт тебе пустоту, а не значение из инпута. Необходимо использовать .val(). Так что твой 100% рабочий код ни фига не перадаёт на сервер Ты читаешь задним местом? Я же выше написал, модель в js - это огрызок от ajax, будет работать с ними и без него. Код 100% рабочий, дурик :) Включи голову уже. hVosttcodearticles.ruЯ не спорю про разумность термина, но если говорить в контексте mvc, это модель. Как же модель? Именно в терминах MVC, модель это как раз бизнес-логика, откуда приходят данные и куда они в итоге заталкиваются. Или что ты имеешь в виду? В терминах MVC нету понятия вью модели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 12:57 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANA, специально для тех, кто в танке. Работают 100% оба варианта. Код: javascript 1. 2. Код: javascript 1. Оба варианта постят форму в контроллер. Так что ты опять обосрался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:00 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Четвёртое: до вызова IValidatableObject.Validate дело вообще не дойдёт, т.к. "Password is required". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:04 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Пятое: да даже бы если метод IValidatableObject.Validate отработал, в ответ ты получишь что? HTML страницы, что нужно парсить. Вот это пять ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:06 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, дак давай, выложи проект, посмотрим, что у тебя 100% работает. Код или воображение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:07 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAЧетвёртое: до вызова IValidatableObject.Validate дело вообще не дойдёт, т.к. "Password is required". Это уже детали. Я тебе рассказал идею, разжевал её во всех плоскостях, ты выклянчил у меня код. А теперь начинаешь какие-то цепляться к какой-то ерунде. Тебе написать полностью рабочее решение? Ты реально дурак? skyANAПятое: да даже бы если метод IValidatableObject.Validate отработал, в ответ ты получишь что? HTML страницы, что нужно парсить. Вот это пять Тупица. Парсить нужно $.ajax, а не $.post. Вот тут точно двойка. Иди учи матчать. skyANAcodearticles.ru, дак давай, выложи проект, посмотрим, что у тебя 100% работает. Код или воображение Выложу. А ты признаешь себя идиотом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ru, дак давай, выложи проект, посмотрим, что у тебя 100% работает. Код или воображение Если у тебя отсутствует голова и ты с 30-го раза невдупляешь, о чем тебе пишут, я могу еще набросить на вентилятор. Вот так нужно "парсить", если у нас $.ajax. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:16 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAЧетвёртое: до вызова IValidatableObject.Validate дело вообще не дойдёт, т.к. "Password is required". Это уже детали. Я тебе рассказал идею, разжевал её во всех плоскостях, ты выклянчил у меня код. А теперь начинаешь какие-то цепляться к какой-то ерунде. Тебе написать полностью рабочее решение? Ты реально дурак?Ты уже написал 100% рабочее решение. Каждый может убедиться в его работоспособности, наример так: Код: html 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Тынц А дурак я потому, что столько времени потратил, чтобы вывести тебя на чистую воду. А смысл? Ты как был упёртым equus asinus, им и остался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:20 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAТы уже написал 100% рабочее решение. Каждый может убедиться в его работоспособности, наример так Ты уже ляпнул чушь про anti-forgery form field "__RequestVerificationToken", думаю, хватит. Очередная тупость, которая не поддается здравой логике. skyANAА дурак я потому, что столько времени потратил, чтобы вывести тебя на чистую воду. А смысл? Ты как был упёртым equus asinus, им и остался. Тут профит только один, в очередной раз показать всем, что мыслить ты не умеешь. Тебе объяснили, как можно делать валидацию 4 способами (классический POST, асинхронные запрос (post + ajax) и Remote). Ты продолжаешь жечь напалмом и стоить из себя идиота. И так в каждом топике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:26 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAТы уже написал 100% рабочее решение. Каждый может убедиться в его работоспособности, наример так Ты уже ляпнул чушь про anti-forgery form field "__RequestVerificationToken", думаю, хватит. Очередная тупость, которая не поддается здравой логике.После того как я тебе сказл про ошибку, ты по тихому избавился от атрибута ValidateAntiForgeryToken в своём 100% рабочем решении, и имеешь наглость обвинять меня в тупости? Не красиво, ой как не красиво с твоей стороны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:29 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruТут профит только один, в очередной раз показать всем, что мыслить ты не умеешь. Тебе объяснили, как можно делать валидацию 4 способами (классический POST, асинхронные запрос (post + ajax) и Remote). Ты продолжаешь жечь напалмом и стоить из себя идиота. И так в каждом топике.Ты так и не предоставил рабочего решения с твоим хвалённым Register: IValidatableObject черещ ajax. Это только на словах у тебя с ним и так можно, и сяк. А на деле у тебя не вышло, не смотря на то, что ты несколько раз, что решение твоё 100% работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:32 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruпропущено... Ты уже ляпнул чушь про anti-forgery form field "__RequestVerificationToken", думаю, хватит. Очередная тупость, которая не поддается здравой логике.После того как я тебе сказл про ошибку, ты по тихому избавился от атрибута ValidateAntiForgeryToken в своём 100% рабочем решении, и имеешь наглость обвинять меня в тупости? Не красиво, ой как не красиво с твоей стороны. Где я от него избавился, ты в вакууме? Вот атрибуты метода контроллера, всё работает, дурилко [HttpPost, AllowAnonymous, ValidateAntiForgeryToken] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:33 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAпропущено... После того как я тебе сказл про ошибку, ты по тихому избавился от атрибута ValidateAntiForgeryToken в своём 100% рабочем решении, и имеешь наглость обвинять меня в тупости? Не красиво, ой как не красиво с твоей стороны. Где я от него избавился, ты в вакууме?Вот тут уже избавился: 16687039 . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:34 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruТут профит только один, в очередной раз показать всем, что мыслить ты не умеешь. Тебе объяснили, как можно делать валидацию 4 способами (классический POST, асинхронные запрос (post + ajax) и Remote). Ты продолжаешь жечь напалмом и стоить из себя идиота. И так в каждом топике.Ты так и не предоставил рабочего решения с твоим хвалённым Register: IValidatableObject черещ ajax. Это только на словах у тебя с ним и так можно, и сяк. А на деле у тебя не вышло, не смотря на то, что ты несколько раз, что решение твоё 100% работает. Я уже все способы перечислил, как можно решить задачу. А бегать за тобой, подтирать код, разжевывать буквы, нет никакого желания. Могу написать, если конечно признаешься в своей тупости. По рукам? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:34 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruВот атрибуты метода контроллера, всё работает, дурилко [HttpPost, AllowAnonymous, ValidateAntiForgeryToken]Проект выкладывай. Пока только в твоём больном воображении что-то у тебя работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:35 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruпропущено... Где я от него избавился, ты в вакууме?Вот тут уже избавился: 16687039 . Ну ты ламер Это вообще другой уже код. Это решение на чистом $.ajax, а не на $.post Ты читаешь жопой? Вот тут я написал, $.post работает со штатным методом (с ValidateAntiForgeryToken) 16686702 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:36 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruВот атрибуты метода контроллера, всё работает, дурилко [HttpPost, AllowAnonymous, ValidateAntiForgeryToken]Проект выкладывай. Пока только в твоём больном воображении что-то у тебя работает. Я выложил код. Проект сам собери и осознай стою ничтожную тупость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:36 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAпропущено... Ты так и не предоставил рабочего решения с твоим хвалённым Register: IValidatableObject черещ ajax. Это только на словах у тебя с ним и так можно, и сяк. А на деле у тебя не вышло, не смотря на то, что ты несколько раз, что решение твоё 100% работает. Я уже все способы перечислил, как можно решить задачу. А бегать за тобой, подтирать код, разжевывать буквы, нет никакого желания. Могу написать, если конечно признаешься в своей тупости. По рукам?Слив засчитан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:36 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruпропущено... Я уже все способы перечислил, как можно решить задачу. А бегать за тобой, подтирать код, разжевывать буквы, нет никакого желания. Могу написать, если конечно признаешься в своей тупости. По рукам?Слив засчитан. Слив засчитан. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:36 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAпропущено... Проект выкладывай. Пока только в твоём больном воображении что-то у тебя работает. Я выложил код. Проект сам собери и осознай стою ничтожную тупость.Какое же ты трепло. Твой код не работает. Тынц . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:38 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruпропущено... Я выложил код. Проект сам собери и осознай стою ничтожную тупость.Какое же ты трепло. Твой код не работает. Тынц . Какая же ты тупица. Мой код 100% работает 16685710 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:42 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Скианочка, а вот тебе хук с правой ($.ajax) AccountController Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Register.cshtml Код: 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. RegisterViewModel Код: 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. Только сцуко не говори, что тебя опять обманули. Это ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:54 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruМой код 100% НЕ работает 16685710 1. мы получим ошибку: The required anti-forgery form field "__RequestVerificationToken" is not present; 2. $(".email").text() вернёт пустую строку, а не значение инпута, т.к. для этого надо использовать метод .val(); 3. JSON.stringify(model) не замапится в модель, т.к. надо передавать Email=test@test.tu, а не { "Email": "test@test.tu" }; 4. Даже, если данные будут переданы на сервер, то до вызова IValidatableObject.Validate дело не дойдёт, т.к. согласно документации, данный метод вызывается после всех проверок, которые не будут пройдены, т.к. в модели нет ни пароля, ни подтверждения пароля, а они являются обязательными полями; 5. Но даже бы если метод IValidatableObject.Validate отработал, в ответ мы бы получили полностью отрендеренную страницу в виде HTML, и пришлось бы этот HTML парсить, чтобы выделить нужное нам сообщение. Любой желающий может проверить перечисленные пункты, создав в Visual Studio проект по шаблону ASP.NET MVC Internet Application, и вставив туда код от МСУ. C# код в метод Register(RegisterModel model) контроллера AccountController . JavaScript код в Register.cshtml после @Scripts.Render("~/bundles/jqueryval") . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:00 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruМой код 100% НЕ работает 16685710 1. мы получим ошибку: The required anti-forgery form field "__RequestVerificationToken" is not present; 2. $(".email").text() вернёт пустую строку, а не значение инпута, т.к. для этого надо использовать метод .val(); 3. JSON.stringify(model) не замапится в модель, т.к. надо передавать Email=test@test.tu, а не { "Email": "test@test.tu" }; 4. Даже, если данные будут переданы на сервер, то до вызова IValidatableObject.Validate дело не дойдёт, т.к. согласно документации, данный метод вызывается после всех проверок, которые не будут пройдены, т.к. в модели нет ни пароля, ни подтверждения пароля, а они являются обязательными полями; 5. Но даже бы если метод IValidatableObject.Validate отработал, в ответ мы бы получили полностью отрендеренную страницу в виде HTML, и пришлось бы этот HTML парсить, чтобы выделить нужное нам сообщение. Любой желающий может проверить перечисленные пункты, создав в Visual Studio проект по шаблону ASP.NET MVC Internet Application, и вставив туда код от МСУ. C# код в метод Register(RegisterModel model) контроллера AccountController . JavaScript код в Register.cshtml после @Scripts.Render("~/bundles/jqueryval") . 1. Мы не получим ошибку The required anti-forgery form field "__RequestVerificationToken" is not present; 2. $(".email").text() не играет роли, я тебе уже 10 раз об этом писал. $.post постит форму, а не $(".email").text() 3. JSON.stringify(model) и не должна мапиться в модель, мапиться в модель будет вся форма. Тоже писал об этом. Это обычный огрызок кода, который нужно выкинуть. Но так или иначе он 100% работает 4. Ну так и пусть идет валидация всего класса. Пусть пользователь всё вводит, а потом мы отвалидируем. Если ты хочешь более гибкого решения, чтобы не зависеть от остальной валидации, то сделай вторую модель IValidatableObject и реализуй в ней проверку на email. И дергай её аяксом. Это всё уже дополнительная логика, которая не обсуждалась изначально. И тем не менее, эта логика отлично ложится в IValidatableObject 5. Я тебе еще раз повторяю, не нужно ничего парсить. Выше я пример дал, валидаторы штатно отработают. Если нужна гибкая динамика, выше я дал пример, как рендерить словарь ошибок в валидаторе формы через аякс. Опять же, штатные валидаторы рулят. Купи уже мозг себе. Если ты там референсы скриптов не можешь осилить, это не мои проблемы. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:16 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru1. Мы не получим ошибку The required anti-forgery form field "__RequestVerificationToken" is not present; 2. $(".email").text() не играет роли, я тебе уже 10 раз об этом писал. $.post постит форму, а не $(".email").text() 3. JSON.stringify(model) и не должна мапиться в модель, мапиться в модель будет вся форма. Тоже писал об этом. Это обычный огрызок кода, который нужно выкинуть. Но так или иначе он 100% работает 4. Ну так и пусть идет валидация всего класса. Пусть пользователь всё вводит, а потом мы отвалидируем. Если ты хочешь более гибкого решения, чтобы не зависеть от остальной валидации, то сделай вторую модель IValidatableObject и реализуй в ней проверку на email. И дергай её аяксом. Это всё уже дополнительная логика, которая не обсуждалась изначально. И тем не менее, эта логика отлично ложится в IValidatableObject 5. Я тебе еще раз повторяю, не нужно ничего парсить. Выше я пример дал, валидаторы штатно отработают. Если нужна гибкая динамика, выше я дал пример, как рендерить словарь ошибок в валидаторе формы через аякс. Опять же, штатные валидаторы рулят. на счёт пунктов 2-4, скайана прав. придётся признать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:36 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruЕсли ты хочешь более гибкого решения, чтобы не зависеть от остальной валидации, то сделай вторую модель IValidatableObject и реализуй в ней проверку на email. И дергай её аяксом. Это всё уже дополнительная логика, которая не обсуждалась изначально. И тем не менее, эта логика отлично ложится в IValidatableObjectНичего она туда отлично не ложиться. Ты предлагаешь создать отдельный класс с отдельным полем, для проверки на валидность этого самого поля. Что-то типа: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Причём, чтобы обработать результат, надо будет ещё и ModelState проверять и перебирать. Причём необходимость валидировать RegisterModel при этом не отменяется. Получаем больше кода, да ещё и дублирование. По сравнению с тем, что я предлагал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:36 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
и 5-ый тоже прав. и 1-ый тоже, так как пост. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:37 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:41 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, Код: 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. ниправильно мешать атрибуты с IValidatableObject, ваще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:44 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Есть же атрибут [Remote], чем он вам не угодил, не пойму??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:46 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttЕсть же атрибут [Remote], чем он вам не угодил, не пойму???Я разве где-то говорил, что атрибут [Remote] мне не угодил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:53 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruЕсли ты хочешь более гибкого решения, чтобы не зависеть от остальной валидации, то сделай вторую модель IValidatableObject и реализуй в ней проверку на email. И дергай её аяксом. Это всё уже дополнительная логика, которая не обсуждалась изначально. И тем не менее, эта логика отлично ложится в IValidatableObjectНичего она туда отлично не ложиться. Ты предлагаешь создать отдельный класс с отдельным полем, для проверки на валидность этого самого поля. Что-то типа: Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Причём, чтобы обработать результат, надо будет ещё и ModelState проверять и перебирать. Причём необходимость валидировать RegisterModel при этом не отменяется. Получаем больше кода, да ещё и дублирование. По сравнению с тем, что я предлагал. Отлично ложится. Чтобы не было дублирования и всё работало на одной IValidatableObject модели, тогда дожидаемся заполнения всех полей, постим и валидируем. Тоже вполне нормальный вариант. Всё зависит от способа исполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:54 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttcodearticles.ru1. Мы не получим ошибку The required anti-forgery form field "__RequestVerificationToken" is not present; 2. $(".email").text() не играет роли, я тебе уже 10 раз об этом писал. $.post постит форму, а не $(".email").text() 3. JSON.stringify(model) и не должна мапиться в модель, мапиться в модель будет вся форма. Тоже писал об этом. Это обычный огрызок кода, который нужно выкинуть. Но так или иначе он 100% работает 4. Ну так и пусть идет валидация всего класса. Пусть пользователь всё вводит, а потом мы отвалидируем. Если ты хочешь более гибкого решения, чтобы не зависеть от остальной валидации, то сделай вторую модель IValidatableObject и реализуй в ней проверку на email. И дергай её аяксом. Это всё уже дополнительная логика, которая не обсуждалась изначально. И тем не менее, эта логика отлично ложится в IValidatableObject 5. Я тебе еще раз повторяю, не нужно ничего парсить. Выше я пример дал, валидаторы штатно отработают. Если нужна гибкая динамика, выше я дал пример, как рендерить словарь ошибок в валидаторе формы через аякс. Опять же, штатные валидаторы рулят. на счёт пунктов 2-4, скайана прав. придётся признать. Что признать? Нечего там признаваться, я прокомментировал каждый пункт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:54 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttниправильно мешать атрибуты с IValidatableObject, ваще. Глупости. IValidatableObject отлично вписывается сюда. hVosttЕсть же атрибут [Remote], чем он вам не угодил, не пойму??? Почему не угодил? Хороший вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:55 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
А вообще в WildApricot валидация выглядит так: Код: 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. Код: c# 1. 2. 3. 4. Причём ValidationModel конвертируется в ValidationJsonModel и работает на клиенте, а не только на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 15:06 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruЧто признать? Нечего там признаваться, я прокомментировал каждый пункт. То что ты привёл 16687324 -- это не работает, я показал где и почему, и это только по минимумому. самое очевидное так сказать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 15:07 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruГлупости. IValidatableObject отлично вписывается сюда. нельзя! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 15:08 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttcodearticles.ruЧто признать? Нечего там признаваться, я прокомментировал каждый пункт. То что ты привёл 16687324 -- это не работает, я показал где и почему, и это только по минимумому. самое очевидное так сказать. То, что я привел, 100% работает. Вот солюшен . hVosttcodearticles.ruГлупости. IValidatableObject отлично вписывается сюда. нельзя! Можно и нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 15:11 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVostt, ты же знаешь, что МСУ будет вести себя как последнее трепло и тролль, но не признается, что облажался. Давай не будем его кормить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 15:13 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Все мы знаем о насущной тупости скианы, которому нужно всё по 200 раз разжевывать. И даже на 201 раз у него в голове мало что отложится, чтобы понять, что он обычное днище. Давайте все скажем спасибо скиане за его очередную тупость. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 15:22 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVostt, объясню, почему IValidatableObject таки лучше, чем Remote. Remote - это чисто mvc-шная залипушка, а IValidatableObject - это DataAnnotations из FW. IValidatableObject и IDataErrorInfo будут работать даже под водой. Это универсальное решение. Но я не против Remote, это тоже хороший способ быстро решить задачу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 15:40 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, по тому, как сильно ты хамишь, можно понять степень твоей защитной реакции на то, как ты облажался. Попробуй как-нибудь перебороть свои комплексы и признать ошибки. А то может и в патологию выродится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 15:47 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruhVostt, объясню, почему IValidatableObject таки лучше, чем Remote. Remote - это чисто mvc-шная залипушка, а IValidatableObject - это DataAnnotations из FW. IValidatableObject и IDataErrorInfo будут работать даже под водой. Это универсальное решение. Но я не против Remote, это тоже хороший способ быстро решить задачу. так а кто ж мешает сделать свой атрибут типа Remote? атрибуты явно лучше, чем реализация классом IValidatableObject, так как атрибуты могут применяться множество раз, на разных моделях. реализовывать IValidatableObject -- это крайний случай, которого всеми силами следует избегать, обычно он требуется когда валидация сложная и комплексная, учитывает значения всех или значительной части полей модели. такое требуется крайне редко. и это уж точно не подходит для проверки имени пользователя на валидность. ну просто можно свой атрибут реализовать, если Remote не устраивает. у меня таких разных кастомных атрибутов обычно набирается много, часть из них уже крепко сидит в шаред библиотеке, которая используется в нескольких проектах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 15:55 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVostt, а вот у нас для одной и той же модели можно применять разную модель валидации (набор правил). Причём правила могут быть как простые, так и комплексные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 16:00 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttcodearticles.ruhVostt, объясню, почему IValidatableObject таки лучше, чем Remote. Remote - это чисто mvc-шная залипушка, а IValidatableObject - это DataAnnotations из FW. IValidatableObject и IDataErrorInfo будут работать даже под водой. Это универсальное решение. Но я не против Remote, это тоже хороший способ быстро решить задачу. так а кто ж мешает сделать свой атрибут типа Remote? атрибуты явно лучше, чем реализация классом IValidatableObject, так как атрибуты могут применяться множество раз, на разных моделях. реализовывать IValidatableObject -- это крайний случай, которого всеми силами следует избегать, обычно он требуется когда валидация сложная и комплексная, учитывает значения всех или значительной части полей модели. такое требуется крайне редко. и это уж точно не подходит для проверки имени пользователя на валидность. ну просто можно свой атрибут реализовать, если Remote не устраивает. у меня таких разных кастомных атрибутов обычно набирается много, часть из них уже крепко сидит в шаред библиотеке, которая используется в нескольких проектах. Так в том-то и дело, что не нужны никакие дополнительные атрибуты. Всё отлично ложится в ValidatableObject и IDataErrorInfo, причем самым гибким образом. Да и зачем писать что-то типа Remote, если уже есть Remote. Попахивает идиотизмом. IValidatableObject и IDataErrorInfo это мощный инструмент, подходит на все 100% случаев жизни. Типа проверки на дубликат учетной записи. А кастомные атрибуты и прочая мишура идет в лес. Зачем писать велосипед, когда всё уже есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 16:02 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAhVostt, а вот у нас для одной и той же модели можно применять разную модель валидации (набор правил). Причём правила могут быть как простые, так и комплексные. Я про это писал выше. Делается n конкретный IValidatableObject моделей и каждая может валидироваться по-отдельности, так и всё вместе. Причем в mvc есть готовый инструмент для форсирования валидации TryValidateModel. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 16:06 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAhVostt, а вот у нас для одной и той же модели можно применять разную модель валидации (набор правил). Причём правила могут быть как простые, так и комплексные. Я про это писал выше. Делается n конкретный IValidatableObject моделей и каждая может валидироваться по-отдельности, так и всё вместе. Причем в mvc есть готовый инструмент для форсирования валидации TryValidateModel.Мимо. У нас всего два класса, а не N: ViewModel и ValidationModel. Но при этом в разных местах можно применать разные наборы правил (ValidationRules), причём каких угодно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 16:14 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruТак в том-то и дело, что не нужны никакие дополнительные атрибуты. Всё отлично ложится в ValidatableObject и IDataErrorInfo, причем самым гибким образом. Да и зачем писать что-то типа Remote, если уже есть Remote. Попахивает идиотизмом. IValidatableObject и IDataErrorInfo это мощный инструмент, подходит на все 100% случаев жизни. Типа проверки на дубликат учетной записи. А кастомные атрибуты и прочая мишура идет в лес. Зачем писать велосипед, когда всё уже есть? затем, что аспекты гибче наследования. атрибуты можно навесить в любых комбинациях на кучу моделей. а одна реализация IValidatableObject так и будет всего лишь одной реализацией для всего лишь одной модели. недостатки такого подхода объяснять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 16:19 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAhVostt, а вот у нас для одной и той же модели можно применять разную модель валидации (набор правил). Причём правила могут быть как простые, так и комплексные. ну мы несколько отличаем простую и бизнес-валидацию. для бизнеса у нас есть провайдер, который встраивается в механизм валидации MVC / WebAPI через инъекцию, а там накачивается через атрибуты или конфигурацию. даже флюент мы не пишем, как у вас, это уж слишком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 16:21 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANA, Код: c# 1. 2. 3. 4. 5. 6. 7. выглядит как-то громоздко на мой взгляд и не использует существующую инфраструктуру валидации. Не вижу особых преимуществ перед: [MaxLength] ValidSimbolsMask] InvalidSubstringsMask] интересно, почему вы сделали такой выбор ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 16:28 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruпропущено... Я про это писал выше. Делается n конкретный IValidatableObject моделей и каждая может валидироваться по-отдельности, так и всё вместе. Причем в mvc есть готовый инструмент для форсирования валидации TryValidateModel.Мимо. У нас всего два класса, а не N: ViewModel и ValidationModel. Но при этом в разных местах можно применать разные наборы правил (ValidationRules), причём каких угодно. Прямо. У нас может быть сколько угодно классов. Никто никаких ограничений не накладывает. UserValidationModel, UserEmailValidationModel, UserAccessValidationModel и т.п. И все эти валидационные модели централизованно пляшут от IValidatableObject. hVosttcodearticles.ruТак в том-то и дело, что не нужны никакие дополнительные атрибуты. Всё отлично ложится в ValidatableObject и IDataErrorInfo, причем самым гибким образом. Да и зачем писать что-то типа Remote, если уже есть Remote. Попахивает идиотизмом. IValidatableObject и IDataErrorInfo это мощный инструмент, подходит на все 100% случаев жизни. Типа проверки на дубликат учетной записи. А кастомные атрибуты и прочая мишура идет в лес. Зачем писать велосипед, когда всё уже есть? затем, что аспекты гибче наследования. атрибуты можно навесить в любых комбинациях на кучу моделей. а одна реализация IValidatableObject так и будет всего лишь одной реализацией для всего лишь одной модели. недостатки такого подхода объяснять? Что может быть гибче прямого кодирования в реализации аннотаций? Причем, у нас не обязательно одна IValidatableObject, их может быть 10. И работать они могут по одной, две, три или сразу все вместе. В зависимости от потребностей. Декомпозируй как хочешь. Никаких левых атрибутов. Всё штатно и прозрачно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 16:33 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
И самое главное, о чем все как-то забыли. Никакой логики исключений для валидации модели! За исключение - кастрация без суда и следствия. Дада. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 16:34 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruДекомпозируй как хочешь. Как ты собираешься декомпозировать, если они прибиты к своим моделям? Вот есть атрибут [Required], давай выбросим и напишем IValidatableObject для этих целей. Покажешь пример? А то что-то не догоняю, может ты и прав, на помойку эти атрибуты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 16:35 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruЗа исключение - кастрация без суда и следствия. Дада. Вот здеся согласен полностью на все 100%. Ещё бы рук лешить для верности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 16:36 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttcodearticles.ruДекомпозируй как хочешь. Как ты собираешься декомпозировать, если они прибиты к своим моделям? Вот есть атрибут [Required], давай выбросим и напишем IValidatableObject для этих целей. Покажешь пример? А то что-то не догоняю, может ты и прав, на помойку эти атрибуты. Ну вот скиана захотел реализовать отдельно проверку на существование учетки. Ему не нравится, что нужно сначала заполнить все поля, а потом нажимать кнопку сохранить. И только тогда начинается валидация всей модели. Ему хочется, чтобы валидация на дубликатов учетки шло сразу и не зависимо от обязательности ввода пароля. Поэтому имеем две модельки Код: 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. Причем, вторую модель RegisterEmailViewModel мы можем валидировать как через ModelState (удобно для случаев аяксов), так и через TryValidateModel в контроллере при посте всей формы. Идею понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 16:56 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Вообще-то это hVostt изначально хотел на лету подсказывать пользователю, что логин занят и предлагать свободные варианты. А Алексей задал вопрос как этот запрос реализовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 17:01 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, я же хотел код, после того как ты сказал, что это как два пальца об асфальт, хоть аяксом, хоть без. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 17:02 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAВообще-то это hVostt изначально хотел на лету подсказывать пользователю, что логин занят и предлагать свободные варианты. А Алексей задал вопрос как этот запрос реализовать. Так а где я был против варианта Remote? Это по сути тот же аякс, только автоматический. skyANAcodearticles.ru, я же хотел код, после того как ты сказал, что это как два пальца об асфальт, хоть аяксом, хоть без. Ну так а где ты увидел реальные трудности? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 17:13 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAВообще-то это hVostt изначально хотел на лету подсказывать пользователю, что логин занят и предлагать свободные варианты. А Алексей задал вопрос как этот запрос реализовать. Так а где я был против варианта Remote? Это по сути тот же аякс, только автоматический. skyANAcodearticles.ru, я же хотел код, после того как ты сказал, что это как два пальца об асфальт, хоть аяксом, хоть без. Ну так а где ты увидел реальные трудности?В простом MVC приложении я не вижу никаких трудностей в использовании IValidationObject. Трудности возникли у тебя, когда я код поросил. Но! У меня-то другой пример был, с desktop И сторонней системой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 17:20 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAВ простом MVC приложении я не вижу никаких трудностей в использовании IValidationObject. Трудности возникли у тебя, когда я код поросил. С IValidationObject не может быть трудностей ни в простом MVC, ни в сложном. Вопросы и тупость начали бить из тебя фонтаном, когда я озвучил тебе алгоритм. Начиная с вызова IValidationObject.Validate прямо из аякса, кончая откровенным вбросом бредятины. skyANAНо! У меня-то другой пример был, с desktop И сторонней системой. Я тебе тоже уже отвечал на этот вопрос. Пишется отдельный сервис или пилится единая сборка. Там всё централизованно валидируется. Не вижу никаких принципиальных отличий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 17:27 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
hVosttskyANA, выглядит как-то громоздко на мой взгляд и не использует существующую инфраструктуру валидации Кстати, да. Отвратительный код, который перечеркивает напрочь всю прелесть штатной валидации. Зачем было делать такой лисапед, непонятно. Скорее всего от тупости и непонимание инфраструктуры валидации был сделан такой присест. За что заслуживают твердую двойку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 17:34 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAВ простом MVC приложении я не вижу никаких трудностей в использовании IValidationObject. Трудности возникли у тебя, когда я код поросил. С IValidationObject не может быть трудностей ни в простом MVC, ни в сложном. Вопросы и тупость начали бить из тебя фонтаном, когда я озвучил тебе алгоритм. Начиная с вызова IValidationObject.Validate прямо из аякса, кончая откровенным вбросом бредятины.Язык попридержи, утомил уже своим троллением. Я до тебя докопался, чтобы ты наконец код написал рабочий. А не голословно заявлял: "IValidationObject подходит в 100% случаях". Судя по тому как ты тут код публиковал, ты его и не использовал-то толком сам. codearticles.ruskyANAНо! У меня-то другой пример был, с desktop И сторонней системой. Я тебе тоже уже отвечал на этот вопрос. Пишется отдельный сервис или пилится единая сборка. Там всё централизованно валидируется. Не вижу никаких принципиальных отличий.А я что изначально предлагал-то? Вынести валидацию в отдельный контур и использовать хоть в MVC, хоть в десктоп, хоть в сервисе, хоть в космосе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 18:08 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruhVosttskyANA, выглядит как-то громоздко на мой взгляд и не использует существующую инфраструктуру валидации Кстати, да. Отвратительный код, который перечеркивает напрочь всю прелесть штатной валидации. Зачем было делать такой лисапед, непонятно. Скорее всего от тупости и непонимание инфраструктуры валидации был сделан такой присест. За что заслуживают твердую двойку.Давай напиши мне код, чтобы твой IValidationObject магическим образом превратился в JSON и работал на клиенте. Только 146% рабочий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 18:10 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Прелесть штатной валидации в том, что она не покрывает нужные нам кейсы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 18:12 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
У меня опять вопрос. Насколько я понял, атрибут Remote используется для ajax-проверки "на лету". Но он не обеспечивает полной проверки модели в случае, скажем, отключенного JavaScript или подделанного запроса. Чем плох подход IValidationObject + Remote? И если он плох, то какие есть альтернативы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 20:55 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
zzУ меня опять вопрос. Насколько я понял, атрибут Remote используется для ajax-проверки "на лету". Но он не обеспечивает полной проверки модели в случае, скажем, отключенного JavaScript или подделанного запроса. Чем плох подход IValidationObject + Remote? И если он плох, то какие есть альтернативы?Тем, что люди перестают понимать, что это всего-лишь упрощение в реализации самых распространённых случаев. Книга "Pragmatic Ajax: A Web 2.0 Primer" была опубликована в 2006-м году, за три года до .NET Framework 4.0 и IValidationObject, а он про альтернативы спрашивает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 22:42 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAЯзык попридержи, утомил уже своим троллением. Я до тебя докопался, чтобы ты наконец код написал рабочий. А не голословно заявлял: "IValidationObject подходит в 100% случаях". Судя по тому как ты тут код публиковал, ты его и не использовал-то толком сам. Глупенький. Моя голословность по поводу IValidationObject подкреплена фактами, которые ты до сих пор не осилил. Переписывать штатную валидацию - признак идиотизма, не иначе. Код мой всегда и всюду использовал именно такие подходы и никак иначе. skyANAcodearticles.ruпропущено... Я тебе тоже уже отвечал на этот вопрос. Пишется отдельный сервис или пилится единая сборка. Там всё централизованно валидируется. Не вижу никаких принципиальных отличий.А я что изначально предлагал-то? Вынести валидацию в отдельный контур и использовать хоть в MVC, хоть в десктоп, хоть в сервисе, хоть в космосе Ну так и в чем противоречие? skyANAПрелесть штатной валидации в том, что она не покрывает нужные нам кейсы. Например? skyANAКнига "Pragmatic Ajax: A Web 2.0 Primer" была опубликована в 2006-м году, за три года до .NET Framework 4.0 и IValidationObject, а он про альтернативы спрашивает :) Ты ж моя радость, IDataErrorInfo поддерживается в еще с первого фреймворка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 00:49 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, ты что-то совсем уже не в тему начал писать. "Факты" я твои прокомментировал уже давно. Штатную валидацию нигде не переписывал. О IDataErrorInfo тоже речи не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 00:54 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Вижу в твоих словах проблески разума: codearticles.ruМоя голословность по поводу IValidationObject подкреплена фактами ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 00:58 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruНу так и в чем противоречие?Ахаха. Я уже несколько раз писал, что твои упоротые рассуждения поддерживают моё предложение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 01:03 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruskyANAПрелесть штатной валидации в том, что она не покрывает нужные нам кейсы. Например?Тебе вышеозвученного мало что-ли? 1. Возможность в разных местах использовать разный набор правил валидации (Validation Rules), или не использовать их вовсе для одной и той же модели; 2. Возможность передавать правила в виде JSON клиенту и применять их там, так сказать, на лету. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 01:10 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Как для 404-ой ошибки для файлов включить поддержку от 3-ёх уровней каталога и выше? 404-ая перехватывается - http://site.ru/dsd/dsds.tsa http://site.ru/dsd/sasa/dsds.tsa от этого уровня и выше 404-ая ошибка в обработчик вообще не попадает - http://site.ru/dsd/sasa/ttt/dsds.tsa то есть если запрос файла в 3 папки и выше, то 404 отдаётся хрен пойми кем, просто белый лист и статус 404. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 15:16 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Всё, нашёл как исправить багу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2014, 15:43 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ru, ты что-то совсем уже не в тему начал писать. "Факты" я твои прокомментировал уже давно. Штатную валидацию нигде не переписывал. О IDataErrorInfo тоже речи не было. Тебе задали вопрос, почему "не использована" штатная валидация. Ты начал сопли жевать. Об этом речь. О IDataErrorInfo речи не было, потому, что ты впервые об этом прочитал. Разумеется и речи не было. skyANAcodearticles.ruНу так и в чем противоречие?Ахаха. Я уже несколько раз писал, что твои упоротые рассуждения поддерживают моё предложение. Мне не совсем интересны твои убогие предположения. Ты слишком много предполагаешь и мало делаешь. skyANAcodearticles.ruпропущено... Например?Тебе вышеозвученного мало что-ли? 1. Возможность в разных местах использовать разный набор правил валидации (Validation Rules), или не использовать их вовсе для одной и той же модели; 2. Возможность передавать правила в виде JSON клиенту и применять их там, так сказать, на лету. 1. Делается элементарно с помощью нескольких классов IValidationObject / IDataErrorInfo / атрибуты, уже объяснял на пальцах. 2. Это реализовано в MVC специально для таких унылых ковнокодеров как ты. Читай про ValidationAttribute, IClientValidatable, DataAnnotationsModelValidator и js-адаптеры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 09:35 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, прости, но то, что ты предлагаешь, не подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 09:40 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
А мало-ли я делаю, или много. Фиг знает. В чём измерять? В деньгах? Ну 160 - 180 тыр. в месяц выходит. Для Зеленограда это вполне себе много :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 09:45 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ru, прости, но то, что ты предлагаешь, не подходит. Как это не подходит? Я сомневаюсь, что ты можешь что-то лучше предложить. И что за бред, зачем правила валидации складывать в json, потом писать механизм для разбора этого помёта? Unobtrusive custom attribute подходит на все случаи жизни 100% http://codearticles.ru/articles/784 Прекращай уже писать гавнокод и начни думать головой. skyANAА мало-ли я делаю, или много. Фиг знает. В чём измерять? В деньгах? Ну 160 - 180 тыр. в месяц выходит. Для Зеленограда это вполне себе много :) Ну так можно и и 300 тыр поднимать, вопрос в загрузке. Если херачить без выходных по 12 часов в сутки, убивая и истощая свой организм. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 10:16 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruКак это не подходит?Вот так это не подходит. codearticles.ruНу так можно и и 300 тыр поднимать, вопрос в загрузке. Если херачить без выходных по 12 часов в сутки, убивая и истощая свой организм.Ну да, если херачить так, то 300 и выйдет. Только правильно ты подметил, на фиг надо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 10:26 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ruКак это не подходит?Вот так это не подходит. Твои "аргументы" порой ставят меня в ступор. Ну хорошо, "не подходит", значит не подходит. Убедил skyANAНу да, если херачить так, то 300 и выйдет. Только правильно ты подметил, на фиг надо :) Отож )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 11:04 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ru, а смысл мне тебя убеждать, аргументы какие-то новые приводить? Я тебе озвучил минимальные требования, по ним уже не подходит то, что ты предлагаешь. А на проекте я не один работаю, конечно рассматривались и обсуждались разные варианты, в итоге остановились на текущей реализации. Так что поверь мне на слово :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 12:19 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAcodearticles.ru, а смысл мне тебя убеждать, аргументы какие-то новые приводить? А смысл тогда тут писать? Сидел бы себе в коморке и код ваял, не отвлекаясь. skyANAЯ тебе озвучил минимальные требования, по ним уже не подходит то, что ты предлагаешь. А на проекте я не один работаю, конечно рассматривались и обсуждались разные варианты, в итоге остановились на текущей реализации. Ты озвучил требования, а я тебе предложил штатные механизмы. Так вот и нужно с этого начинать, что кроме тебя на проекте еще есть гавнокодеры, которые начали изобретать велосипед. Я же тебя не обвиняю, я просто хочу ответов. Теперь я ответ получил, спасибо. skyANAТак что поверь мне на слово :) Вот уж кому, а тебе не поверю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 13:12 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
МСУ, иди ты в задницу со своим штатным механизмом. Вот честно, утомил уже. Ты сам его ни в одном проекте не использовал и рабочий код тебе слабо написать. И толку от твоего тро-ло-ло ноль. Ты вообще профессиональной разработкой ещё занимаешься, или уже на пенсии и ходишь сюда, чтобы какашками покидаться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 13:18 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Какой бурное обсуждение данного вопроса. А за сим, раз тут собрались гуру Exceptions хотелось бы узнать про этот вариант реализации обработки ошибок. Таким образом, исключения собираются в таблице логов. А обработка валидности данные делается так у DbContext: Код: 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. То есть все ошибки в том числе и ошибки валидации "падают" в таблицу Logs. Какие казусы и подземные камни скрыты в таком подходе? Ошибки какого типа невозможно отследить таким образом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 13:28 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
skyANAМСУ, иди ты в задницу со своим штатным механизмом. Вот честно, утомил уже. Качество твоих аргументов всё хлипче и хлипче. Мельчаешь, скиана... skyANAТы сам его ни в одном проекте не использовал и рабочий код тебе слабо написать. И толку от твоего тро-ло-ло ноль. Откуда тебе известно, что я его ни в одном проекте не использовал? Почему мне рабочий код написать слабо? Я тебе даже рецепт выкатил, который уже как 2 года пылится на сайте. А ты всё продолжаешь дурачка включать. Доколе? skyANAТы вообще профессиональной разработкой ещё занимаешься, или уже на пенсии и ходишь сюда, чтобы какашками покидаться? Какая разработка, акстись. Я профессиональный хирург, лечу таких вот как ты неофитов. Ну и заодно какашками кидаюсь, пока пациент под наркозом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 13:29 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
codearticles.ruКакая разработка, акстись.Понятно, вопросов больше не имею. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 13:32 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Calabonga, 1. Что делает return SaveChanges(); в блоках catch? 2. Зачем на каждое из исключений создавать отдельный лог? 3. Ну и такой handling исключения я бы инкапсулировал в отдельный класс. Назовём его ExceptionHandler. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 13:37 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
А понял... Код: c# 1. ни фига не делает, т.к. перед этим вызывается Код: c# 1. Жесть какая-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 13:40 |
|
||
|
MVC: обработка исключения в контроллере
|
|||
|---|---|---|---|
|
#18+
Вот это тоже напрягает: Код: c# 1. Непосредственно в блоке catch ты должен явно указать, на каком уровне поймано исключение. Чем Exception.Source не устроил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 13:49 |
|
||
|
|

start [/forum/topic.php?all=1&fid=18&tid=1356943]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
249ms |
get tp. blocked users: |
2ms |
| others: | 220ms |
| total: | 540ms |

| 0 / 0 |
