Мне нужно проверить, существует ли в базе данных новый адрес электронной почты пользователей. Электронная почта передает всю стандартную проверку, но что, если я хочу вызвать специальную проверку с контроллера, если почта уже существует после проверки ее на базе данных?
MVC 3 Razor - проверка триггера от контроллера
Ответ 1
В контроллере:
ModelState.AddModelError("ErrorEmail", "Error Message");
В представлении:
@Html.ValidationMessage("ErrorEmail")
Надеюсь, что это поможет
Ответ 2
Я думаю, что вы ищете RemoteAttribute
.
Это атрибут ValidationAttribute для удаленной проверки. Он работает как другие атрибуты проверки, добавляя ошибки модели в словарь modelstate.
Ознакомьтесь с этими статьями, используя RemoteAttribute
:
Ответ 3
Я нашел способ выполнить условную проверку из ViewModel. Класс VM должен будет реализовать интерфейс IValidatableObject.
Затем добавьте метод, подобный этому, внизу виртуальной машины:
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (validationContext == null)
return null;
var valResults = new List<ValidationResult>();
if (!EmailExists))
valResults.Add(new ValidationResult($"Email is required.", new[] { "ErrorEmail" }));
return valResults;
}
И, конечно, вам понадобится это в View:
@Html.ValidationMessage("ErrorEmail")
Надеюсь, это поможет!