#asp.net-mvc #validation
#asp.net-mvc #проверка
Вопрос:
У меня есть класс User, у которого есть свойство Email, подобное этому :
public class User : Entity
{
...
[Display(Name = "Email"), Required(ErrorMessage = "Required."), Remote("EmailExists", "User", ErrorMessage = "Email already in Use.")]
public virtual string Email { get; set; }
...
}
Мой View Create отлично работает со всей проверкой…
Но, на мой взгляд, мой текстовый ящик электронной почты доступен только для чтения, поэтому пользователь не может изменить адрес электронной почты…
Проблема в том, что моя удаленная проверка EmailExists продолжает срабатывать…
Есть ли способ исключить проверку почтового клиента только в этом случае? Или, может быть, другое решение?
Спасибо
Ответ №1:
Лучшим решением было бы отобразить электронную почту в виде текстового содержимого (span, p и т.д.) В этом конкретном случае — проверки не будут выполняться. Лучше всего этого добиться с помощью шаблонов редактора. Но если вы не хотите, вы могли бы использовать некоторый javascript для удаления правил на стороне клиента. Взгляните на Плагины / проверку / правила — вы бы удалили правило, когда текстовое поле доступно только для чтения. Но для меня предпочтительным вариантом является первый способ
Ответ №2:
Я думаю, что более простой способ — отключить поле в клиенте вместо использования только для чтения. Плагин validate не учитывает отключенные поля.
Комментарии:
1. Поля формы легко подделываются, поэтому, если поле должно быть доступно только для чтения, вам просто нужно учесть это на контроллере, обновляя электронное письмо, только если это новый пользователь.
Ответ №3:
Вы могли бы использовать разные ViewModels для редактирования и создания представлений и применять удаленный атрибут только к модели представления, связанной с create view, или вызвать какую-либо другую логику удаленной проверки для модели представления, связанной с edit view.