powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC: обработка исключения в контроллере
25 сообщений из 406, страница 10 из 17
MVC: обработка исключения в контроллере
    #38771733
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КУ меня это решение работает уже больше 10-и лет, ещё со времён C++ Builder. И пофиг мне на эстетические чувства каких-то там теоретиков.

Я уже сказал, я тебе переубеждать ни в чём не собираюсь. Поверь, я и не такой кошмар видел. Вообще это мудацкий менталитет. Все жалуются в России, что дороги УГ, но как только поциент попадает в контору, занимающейся укладкой дорог, то продолжает делать говно. Это вообще не лечится чтоли? Можешь делать как хочешь, лично мне пофиг. Но у нас ты бы точно не задержался.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771734
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Алексей Кcodearticles.ruпропущено...
Запрос в БД пойдет из пост-контроллера (возможен аякс). Причем тут модель?Да я про модель в другом понимании. Ладно, проехали.
У нас MVC :) Давай, чтобы не путаться, называть моделью (ну или хотя бы моделью представления) то, что биндится на вью. Тогда будет понимание.

ErrorPage.cshtml
Код: html
1.
2.
3.
4.
5.
6.
@model Models.ErrorModel
<h2>Ошибка</h2>


<pre style="color: Red">@Model.ErrorMessage</pre>
<p>@Html.ActionLink("На главную...", "Index", "Home")</p>



В данном случае в терминологии MVC модель - это класс ErrorModel. Можно еще её назвать вью моделью, тоже понятно всем будет. А ErrorPage.cshtml (не важно, отрендеренный или нет) - это представление.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771738
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttАлексей КИз непонятого... Нужен список конкретных негативных эффектов.

Что за глупый вопрос? Возьмём того же многострадального пользователя. Очень часто вместо реального удаления записи используется поле с признаком удаления. Удалили пользователя с логином "mefazavr", значит логин должен освободиться. При наличии уникального индекса, логин останется "занятым".Если у меня при удалении пользователя он физически удаляется, если ссылочная целостность позволит, почему бы мне этим не воспользоваться. Впрочем, поле "заблокирован" в пользователях есть, и я не хочу, чтобы был добавлен пользователь, одноимённый заблокированному пользователю.
hVosttЕсли бы у тебя был опытОткуда? 14 лет стажа коту под хвост...
hVostt... ты бы такие глупости бы не спрашивал.Разве я что-то спрашивал? Мне нужно обоснование твоей точки зрения, не более того.
hVosttНикогда целостность БД не используется для валидации бизнес-данных. Никогда. Только в рядах совсем уж начинающих сопливых новичков. Но это обычно с опытом проходит.Ты живёшь в каком-то своём непонятном мире.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771741
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
В этом случае используется это .
Код: c#
1.
2.
3.
4.
5.
6.
        static void AddDbCustomExceptionConverter()
        {
            var converter = new DbCustomExceptionConverter();
            converter.AddMessage("IX_sec_users_UserName", "Пользователь с указанным именем уже существует."); 
            LogExceptionParser.RegisterExceptionConverter(converter);
        }

О как. А скрипт создания индекса как оформлен?Ну как обычно: create index IX_sec_users_UserName...
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771746
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruАлексей КНу как ты без запроса к БД определишь уникальность введённого значения?
Запрос в БД пойдет из пост-контроллера (возможен аякс). Причем тут модель?

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

skyANAТеперь представь, что 100500 профилей пользователей прилетают из сторонней системы и их тоже нужно проверить, но процедуру регистрации проводить не надо, пользователи уже прошли регистрацию в сторонней системе.
Надо просто проверить и положить в базу.
Если в процессе участвуют n-систем, необходим единый шлюз. Например, REST сервис. В методе валидации модели (или через ремоут атрибут) у тебя будет на лету дергаться сервис, который будет делать проверку. В чем проблема?Код покажи.

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

НЕ важно сколько времени ты провёл в столовой, важно сколько пирожков ты успел съесть. Видимо тебе твои 14 лет "стажа" не дали ничего. Уровень младшего джуниора.

Алексей КЕсли у меня при удалении пользователя он физически удаляется, если ссылочная целостность позволит, почему бы мне этим не воспользоваться. Впрочем, поле "заблокирован" в пользователях есть, и я не хочу, чтобы был добавлен пользователь, одноимённый заблокированному пользователю.

Ты как обычно путаешь. Понятия "заблокирован" и "удалён" -- совершенно разные. Если заблокирован, то да, логин этого пользователя должен быть занят. Но если пользователь удалён, то логин должен быть свободен. В крупных серьёзных системах записи обычно только помечаются удалёнными, но никогда не удаляются физически.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771752
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruАлексей Кпропущено...
Да я про модель в другом понимании. Ладно, проехали.
У нас MVC :) Давай, чтобы не путаться, называть моделью (ну или хотя бы моделью представления) то, что биндится на вью. Тогда будет понимание.

ErrorPage.cshtml
Код: html
1.
2.
3.
4.
5.
6.
@model Models.ErrorModel
<h2>Ошибка</h2>


<pre style="color: Red">@Model.ErrorMessage</pre>
<p>@Html.ActionLink("На главную...", "Index", "Home")</p>



В данном случае в терминологии MVC модель - это класс ErrorModel. Можно еще её назвать вью моделью, тоже понятно всем будет. А ErrorPage.cshtml (не важно, отрендеренный или нет) - это представление.Ок. :-)

Тогда я говорил, наверное, про репозитарий.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771753
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВалидацияПри проектировании стратегии валидации руководствуйтесь следующими рекомендациями:
Проверяйте все вводимые данные и параметры методов в бизнес-слое, даже если проверка ввода выполняется в слое представления.

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

Ограничивайте, отклоняйте и очищайте пользовательский ввод. Иначе говоря, предполагайте, что весь пользовательский ввод является злонамеренным. Проводите проверку длины, диапазона, формата и типа вводимых данных.



Еще раз. Какие нах исключения, братья?
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771760
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КskyANAпропущено...
О как. А скрипт создания индекса как оформлен?Ну как обычно: create index IX_sec_users_UserName... То есть лежит где-то в виде sql-файла?
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771763
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hVosttТы как обычно путаешь. Понятия "заблокирован" и "удалён" -- совершенно разные. Если заблокирован, то да, логин этого пользователя должен быть занят. Но если пользователь удалён, то логин должен быть свободен. В крупных серьёзных системах записи обычно только помечаются удалёнными, но никогда не удаляются физически.В "крупных серьёзных системах" ты и так ничего не сможешь удалить из-за ссылочной целостности.

А ещё в "крупных-серьёзных системах" оперативные данные хранятся на глубину юридического срока давности, потому что больше не требуется.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771765
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruДавай, чтобы не путаться, называть моделью (ну или хотя бы моделью представления) то, что биндится на вью.О как. А в случае, когда твой сервис принимает данные из сторонней системы, то что такое модель и как на дёргает сервис?

Ведь замкнутый круг получается. :)
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771767
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAАлексей Кпропущено...
Ну как обычно: create index IX_sec_users_UserName... То есть лежит где-то в виде sql-файла?Зависит от того, на каком этапе создан индекс. При развёртывании мы отдаём файлы пустой БД, дальнейшие обновления скриптами. В общем, мы следим за именами индексов, если ты об этом. :-)
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771768
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAКод покажи.
Не покажу.

skyANAА то сначала ты предлагаешь базу дёргать аяксом, а потом тут же предлагаешь в модели дёргать сервис :)
А что не понятно? Ввёл данные в UI, нажимаешь кнопку сохранить, пошел пост запрос формы, данные смапились в модель, модель упала в метод контроллера, контроллер опросил ModelState.IsValid, дернулся автоматом IValidatableObject.Validate, в реализации метода опросили ValidationContext, дернули единый шлюз - REST сервис проверки данных, сервис нам сказал false, мы разозлились и выплюнули yield return new ValidationResult("упс"), контроллер не прошел в итоге проверку на ModelState.IsValid и завернул нам дулю с маком. Какие сложности? Проблема, как пропихнуть в модель инстанс REST сервиса? Ну это в детском саде объяснят
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771771
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruВалидацияПри проектировании стратегии валидации руководствуйтесь следующими рекомендациями:
Проверяйте все вводимые данные и параметры методов в бизнес-слое, даже если проверка ввода выполняется в слое представления.

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

Ограничивайте, отклоняйте и очищайте пользовательский ввод. Иначе говоря, предполагайте, что весь пользовательский ввод является злонамеренным. Проводите проверку длины, диапазона, формата и типа вводимых данных.



Еще раз. Какие нах исключения, братья? Опять не читал.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771773
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruskyANAКод покажи.
Не покажу.Зануда.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771776
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAcodearticles.ruДавай, чтобы не путаться, называть моделью (ну или хотя бы моделью представления) то, что биндится на вью.О как. А в случае, когда твой сервис принимает данные из сторонней системы, то что такое модель и как на дёргает сервис?
Ведь замкнутый круг получается. :)
Мы сейчас говорим о MVC приложении. Никаких сервисов нету. Круг остается быть кругом. Если говорим "модель" в терминологии какого-то сервиса, это будет совсем другое. Не нужно мешать в навозную кучу мух, котлеты и жопу и пытаться едино называть всё это мясом. Мол, вот это мясо не работает. А какое мясо? Муха, котлета или задница. Так мы друг друга не поймемю
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771786
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruskyANAКод покажи.
Не покажу.

skyANAА то сначала ты предлагаешь базу дёргать аяксом, а потом тут же предлагаешь в модели дёргать сервис :)
А что не понятно? Ввёл данные в UI, нажимаешь кнопку сохранить, пошел пост запрос формы, данные смапились в модель, модель упала в метод контроллера, контроллер опросил ModelState.IsValid, дернулся автоматом IValidatableObject.Validate, в реализации метода опросили ValidationContext, дернули единый шлюз - REST сервис проверки данных, сервис нам сказал false, мы разозлились и выплюнули yield return new ValidationResult("упс"), контроллер не прошел в итоге проверку на ModelState.IsValid и завернул нам дулю с маком. Какие сложности? Проблема, как пропихнуть в модель инстанс REST сервиса? Ну это в детском саде объяснят 1. Когда тебя Алексей спросил, а где будет запрос в БД, ты придумал что он будет из пост-контроллера аяксом делаться.
Когда же вместо прямого доступа к БД понадобилось через REST сервис работать, то появился второй запрос ещё и в модели.
Нахуа? :)

2. Ну и выходит, что валидация-то на самом деле реализована на стороне сервиса, а не через IValidatableObject.Validate. И при валидации пачки данных прилетевших в REST сервис от сторонней системы, она по другому осуществляется.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771790
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruskyANAпропущено...
О как. А в случае, когда твой сервис принимает данные из сторонней системы, то что такое модель и как на дёргает сервис?
Ведь замкнутый круг получается. :)
Мы сейчас говорим о MVC приложении. Никаких сервисов нету. Круг остается быть кругом. Если говорим "модель" в терминологии какого-то сервиса, это будет совсем другое. Не нужно мешать в навозную кучу мух, котлеты и жопу и пытаться едино называть всё это мясом. Мол, вот это мясо не работает. А какое мясо? Муха, котлета или задница. Так мы друг друга не поймемюНе валяй дурака.
В моём примере ( 16680200 ) есть десктоп и есть сервис. А ты теперь хитро сменил контекст.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771798
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя ладно, добавим ещё и MVC приложение, это только подтверждает мои рассуждения о необходимости инжектить различную реализацию валидации в различные места.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771806
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA1. Когда тебя Алексей спросил, а где будет запрос в БД, ты придумал что он будет из пост-контроллера аяксом делаться.
Когда же вместо прямого доступа к БД понадобилось через REST сервис работать, то появился второй запрос ещё и в модели.
Нахуа? :)
2. Ну и выходит, что валидация-то на самом деле реализована на стороне сервиса, а не через IValidatableObject.Validate. И при валидации пачки данных прилетевших в REST сервис от сторонней системы, она по другому осуществляется.
1. Я говорил, что аякс возможет, читай внимательнее. Какая тебе разница, как я пошлю тебе запрос с данными в контроллер, постом формы или аяксом? Начинай уже думать что ли...
2. Валидация реализована только в IValidatableObject.Validate. Именно этот метод ответит на все вопросы. А что внутри его, не суть важно. Ты обрисовал пример, когда тебе нужна валидация и другим системам - на что я тебе предложил обобщить валидацию в едином сервисе. Это не обязательно должен быть сервис, это может быть всё что угодно, хранимая процедура, DLL, почтовый голубь. В чем непонимание?
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771807
codearticles.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANAcodearticles.ruпропущено...
Мы сейчас говорим о MVC приложении. Никаких сервисов нету. Круг остается быть кругом. Если говорим "модель" в терминологии какого-то сервиса, это будет совсем другое. Не нужно мешать в навозную кучу мух, котлеты и жопу и пытаться едино называть всё это мясом. Мол, вот это мясо не работает. А какое мясо? Муха, котлета или задница. Так мы друг друга не поймемюНе валяй дурака.
В моём примере ( 16680200 ) есть десктоп и есть сервис. А ты теперь хитро сменил контекст.
Начинай уже думать. Если говоришь слово "модель", уточняй контексты.
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771813
kmaw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кcodearticles.ruИсключение - это серьезный сбой программы, а не просто какая-то нотификация из недр BL и прочих слоёв. Нотификации нужно получать через результаты методов.Чё опять?

Будем действовать как в Win API: getlasterror, hresult и всё такое? Сделать специальный InfoException для прикладных ошибок не лучше? Во все времена делалось именно так.
codearticles.ruИсключения нужно получать глобально, хотя бы уж через базовый контроллер...Лучше написать фильтр, и присобачить его на соответствующем уровне.

согласен с Алексей К. исключения не более чем многоуровневый ретурн. Делаем прикладной MyException и кидаем его. В соответствующих местах ловим. А серьезный сбой - это баг или полный фатал. Тут уже ничего не поможет
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771817
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruskyANAпропущено...
Не валяй дурака.
В моём примере ( 16680200 ) есть десктоп и есть сервис. А ты теперь хитро сменил контекст.
Начинай уже думать. Если говоришь слово "модель", уточняй контексты.Слабенькая отмаза.

Это как ты читал пример, что представил себе View Model вместо Domain Model и MVC приложение?
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771821
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kmawАлексей Кпропущено...
Чё опять?

Будем действовать как в Win API: getlasterror, hresult и всё такое? Сделать специальный InfoException для прикладных ошибок не лучше? Во все времена делалось именно так.
пропущено...
Лучше написать фильтр, и присобачить его на соответствующем уровне.

согласен с Алексей К. исключения не более чем многоуровневый ретурн. Делаем прикладной MyException и кидаем его. В соответствующих местах ловим. А серьезный сбой - это баг или полный фатал. Тут уже ничего не поможетА конкретнее? В каких случаях делаем, а в каких нет?
...
Рейтинг: 0 / 0
MVC: обработка исключения в контроллере
    #38771837
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
codearticles.ruskyANA1. Когда тебя Алексей спросил, а где будет запрос в БД, ты придумал что он будет из пост-контроллера аяксом делаться.
Когда же вместо прямого доступа к БД понадобилось через REST сервис работать, то появился второй запрос ещё и в модели.
Нахуа? :)
2. Ну и выходит, что валидация-то на самом деле реализована на стороне сервиса, а не через IValidatableObject.Validate. И при валидации пачки данных прилетевших в REST сервис от сторонней системы, она по другому осуществляется.
1. Я говорил, что аякс возможет, читай внимательнее. Какая тебе разница, как я пошлю тебе запрос с данными в контроллер, постом формы или аяксом? Начинай уже думать что ли...
2. Валидация реализована только в IValidatableObject.Validate. Именно этот метод ответит на все вопросы. А что внутри его, не суть важно. Ты обрисовал пример, когда тебе нужна валидация и другим системам - на что я тебе предложил обобщить валидацию в едином сервисе. Это не обязательно должен быть сервис, это может быть всё что угодно, хранимая процедура, DLL, почтовый голубь. В чем непонимание?Всё, мне просто смешно уже с тебя. Напиши реальный проект, а потом приходи с советами.

Аяксом он собрался опрашивать единый метод IValidatableObject.Validate.
У тебя пользователь вводит логин, остальные поля в этот момент ещё пустые, подумай над этим.

А пункт 2 в очередной раз подтверждает мои размышления.
...
Рейтинг: 0 / 0
25 сообщений из 406, страница 10 из 17
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / MVC: обработка исключения в контроллере
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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