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")

Надеюсь, это поможет!