2010-08-20 2 views
1

Я только что начал изучать образец MVC сегодня (для приложений gui, а не в Интернете), и у вас есть несколько вопросов о том, где должна проводиться проверка данных.Вопрос о проверке MVC

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

Например, можно сказать, что клиент изменяет адрес ipv4 сервера, с которого они хотят подключиться, от gui. Мы хотим убедиться, что на самом деле это адрес ipv4, а не только случайные символы. Если IP-адрес действителен, мы хотим изменить эти данные в модели на новый IP-адрес, и если он недействителен, мы хотим, чтобы на дисплее отображалась ошибка (или что-то еще).

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

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

Благодаря

+1

Возможный дубликат: http://stackoverflow.com/questions/134388/where-do-you-do-your-validation-model- контроллер или вид –

ответ

-1

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

Смежные вопросы