Удаленная проверка MVC 3, проблема с проверкой дубликатов в режиме редактирования - PullRequest
3 голосов
/ 16 августа 2011

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

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

Я искал вокруг и был удивлен, что не смог найти подобную проблему для себя.Я видел много примеров проверки дубликатов имени / адреса электронной почты / значения на страницах создания, но ничего о неизбежной проблеме, которая возникнет в представлении «Правка».

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

Заранее спасибо за любые ответы!

Ответы [ 2 ]

3 голосов
/ 16 августа 2011

Вы должны использовать просмотр моделей. Это классы, специально разработанные для удовлетворения требований представления. Действия контроллера должны принимать / передавать только модели представлений в представления, а не модели вашего домена. Таким образом, у вас будет два действия контроллера, одно для вставки и одно для редактирования, и две соответствующие модели представления с соответствующими правилами проверки.

1 голос
/ 16 августа 2011

Способ решения этой проблемы - два разных метода проверки; один принимает один аргумент (имя пользователя), а второй - 2 аргумента (новое имя пользователя, исходное имя пользователя). Метод Edit проверяется на соответствие методу с двумя аргументами, где он ищет новое имя пользователя, если оно не совпадает с исходным именем пользователя.

...