Если это не удар по контроллеру, который предполагает, что это не проблема с реальной логикой проверки, а скорее проблема с тем, как вы обращаетесь к серверу.
Есть несколько вещей, которые нужно проверить:
Доступен ли ваш код удаленной проверки клиенту вообще?
Первое, на что нужно обратить внимание, это может быть проблема безопасности / аутентификации.Есть несколько простых вещей, которые вы можете сделать, чтобы проверить, что:
- Если на контроллерах или методах установлены атрибуты аутентификации, попробуйте их закомментировать
- попробуйте закомментировать любую другую аутентификациюкод
Если это не помогает, то, когда приложение запущено в режиме отладки, попробуйте использовать Почтальон , чтобы вызвать удаленную конечную точку проверки и посмотреть:
- Почтальон получает обратно 200 от вашего метода.
- Если это так, установите точку останова в своем коде и проверьте, что она действительно выполняется.
ЕслиТогда почтальон может добраться до вашей конечной точки ...
Есть ли проблема в вашем коде?
Я не вижу ничего явно неправильного в вашем коде, но это отличается от того, как я пишуКод проверки.Это пример некоторой работающей удаленной проверки прямо из моего кода
Это свойство модели с набором удаленной проверки:
[System.Web.Mvc.Remote(
action: "CheckExistingDocumentCode",
controller: "Documents",
AdditionalFields = "DocumentId",
HttpMethod = "POST",
ErrorMessage = "Code already exists")]
public string DocumentCode { get; set; }
Это соответствующий метод в контроллере Documents:
[HttpPost]
public async Task<ActionResult> CheckExistingDocumentCode(string DocumentCode, int DocumentId)
{
try
{
if (!await _documentValidationRules.IsExistingDocumentCodeAsync(DocumentCode, DocumentId))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
return Json("This Document Code is already in use", JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
return Json(ex.ToString(), JsonRequestBehavior.AllowGet);
}
}
Вы можете видеть, что я явно назвал все параметры в свойстве модели, чтобы точно понять, что происходит.
Сравнивая мой код с вашим, основные различия заключаются в следующем:
- Мины асинхронные.Это не должно иметь никакого значения.
- Мой метод контроллера - это POST (поэтому он имеет атрибут
HttpPost
, что также означает, что мне нужно было сообщить модели, что HttpMethod
тоже был POST) - Мой метод удаленной проверки принимает два параметра, поэтому я передаю дополнительное свойство через аргумент
AdditionalFields
Я не вижу, в чем проблема в вашем коде, но попробуйтеменяя его по частям, чтобы он больше походил на мой (в частности, попробуйте сделать его методом post и назвать параметры) и посмотрите, не вызывает ли это каких-либо проблем.
Надеюсь, что-то из приведенного выше приблизит вас.