В моей разметке есть поле, которое я хочу проверить на сервере. Моя форма в настоящее время выглядит так:
<% using (Html.BeginForm()){ %>
<%: Html.Serialize("regData", Model)%>
<div class="RegistrationGroup">
<p><label for="Account_Email">e-mail</label> <%: Html.EditorFor(x => x.Account.Email) %><span class="ErrorMessage"></span></p>
</div>
<% } %>
Тогда в моем скрипте jQuery у меня есть следующий код:
$("form").validate({
rules: {
"Account.Email": {
required: true,
email: true
remote: "Registration/ValidateEmail"
}
}
});
В моем классе RegistrationController у меня есть следующий метод:
public string ValidateEmail(string email)
{
if (email.Contains("oek"))
return "false";
return "true";
}
Таким образом, для тестирования это должно возвращать false и проваливать проверку, если адрес электронной почты где-то внутри "oek"
.
Однако это не работает.
Без удаленной части обязательные и почтовые правила работают так, как должны, поэтому я знаю, что они работают.
Когда я добавляю удаленное правило, выполняются следующие шаги:
- Метод на контроллере вызывается, как и планировалось, с адресом электронной почты в качестве параметра.
- Возвращаемое значение из метода, которое оно перехватило в браузере как true или false соответственно (я использовал инструменты разработчика Chrome для управления этим).
Но проверка не работает, как запланировано, на этом этапе, и после того, как удаленный вызов сделан, обязательные правила и правила электронной почты также перестают работать. (он не пытается применить удаленное правило, пока другие правила не пройдут валидацию, что, конечно, хорошо).
Я также пытался вернуть JsonResult с true или false , но безрезультатно.
Что я здесь не так делаю?