У меня есть поле электронной почты, к которому прикреплен вызов удаленной проверки, чтобы проверить, существует ли введенный адрес электронной почты в системе. Когда пользователь печатает, вызывается метод контроллера, и он передает флаг обратно.
У меня также есть глобальное событие ajaxStart, присоединенное ко всем запросам ajax, которое показывает загрузчик и блокирует страницу. Я хочу предотвратить запуск ajaxStart для этой конкретной функции. Насколько я могу судить, никакие объекты не передаются в событие ajaxStart, и я не уверен, как его подавить в данном конкретном запросе.
Это рендеринг HTML:
<input class="form-control" data-val="true" data-val-remote="Email already exists" data-val-remote-additionalfields="*.Email" data-val-remote-type="POST" data-val-remote-url="/account/emailexists" id="Email" name="Email" placeholder="Business Email" type="email" value="" />
Модель:
public class RegisterViewModel
{
[Remote("EmailExists", "Account", HttpMethod = "POST", ErrorMessage = "Email already exists")]
public string Email { get; set; }
}
Контроллер аккаунта:
[AllowAnonymous]
[HttpPost]
public JsonResult EmailExists(string Email)
{
var exists = Email.UserExists();
return Json(exists, JsonRequestBehavior.AllowGet);
}
Javascript:
$(function () {
$(document).ajaxStart(function () {
// Return if this is '/account/emailexists'
blockUI();
}).ajaxStop($.unblockUI);
//...
Для всех других функций ajax я использую параметр global: false для подавления глобального прослушивателя событий - не знаете, как это сделать с помощью ненавязчивого Javascript.