KendoValidation mit Remote validation

Das ist fast, mich zu töten. Ich habe nie verschwendet so viel Zeit auf ein Thema. Ich habe ein Feld, das validiert werden soll mit einem Anruf an eine REST-API, da überprüft werden muss, die Anwesenheit von einigen Daten auf der DB. Das problem, das ich habe ist, dass das aufrufen der validator.validate-gibt true zurück, auch wenn der Aufruf von json-api false zurück.

Hier der code (ich benutze die Kendo-MVC-Helfer, aber es ist nicht verwandt mit dem problem)

<div id="divValidator1">
<div class="form-group">
    @Html.LabelFor(m => m.Email)
    @(Html.Kendo().TextBoxFor(m => m.Email)
          .HtmlAttributes(new { placeholder = "you@domain.com", type = "email", @class = "k-textbox required",data_bind="value: XXX" })
    )
</div>

<footer class="col-xs-12 form-group text-right">
    @(Html.Kendo().Button()
          .Name("Next1")
          .Content("Next")
          .HtmlAttributes(new { @class = "k-primary", data_bind = "enabled: isEnabled" })
          .Events(ev => ev.Click("onNextClick")))
</footer>

var kendoValid = $("#divValidator1").kendoValidator({
    validateOnBlur: false,
     rules: {
            remote: function (input) {
                if (input.val() == "" || !input.attr("data-val-remote-url")) {
                    return true;
                }

                if (input.attr("data-val-remote-recieved")) {
                    input.attr("data-val-remote-recieved", "");
                    return !(input.attr("data-val-remote"));
                }

                var url = input.attr("data-val-remote-url");
                var postData = {};
                postData[input.attr("data-val-remote-additionalfields").split(".")[1]] = input.val();

                var validator = this;
                var currentInput = input;
                input.attr("data-val-remote-requested", true);
                $.ajax({
                    url: url,
                    type: "POST",
                    data: JSON.stringify(postData),
                    dataType: "json",
                    traditional: true,
                    async:false,
                    contentType: "application/json; charset=utf-8",
                    success: function (data) {

                        if (data == true) {
                            input.attr("data-val-remote", "");
                        }
                        else {
                            input.attr("data-val-remote", false);
                        }
                        input.attr("data-val-remote-recieved", true);
                     //   validator.validateInput(currentInput);


                    },
                    error: function () {
                        input.attr("data-val-remote-recieved", true);
                        validator.validateInput(currentInput);
                    }
                });
                return true;
            }
        },
        messages: {
            remote: function (input) {
                return input.attr("data-val-remote");
            }
        }
}).data("kendoValidator");

var viewModel1 = kendo.observable({
    XXX:null,
        isEnabled: function () {

            var self = this;

            self.get("XXX");

            var x = $("#divValidator1").data("kendoValidator");

            console.log(x.validate());
        }
    });

    kendo.bind($("#divValidator1"), viewModel1);

und hier ist der controller

public ActionResult IsEmailJustPresent(string email)
    {
        var res = email == "something";

        return Json(res, JsonRequestBehavior.AllowGet);
    }

Und das ViewModel

 public class RegisterViewModel
{
    [Required]
    [EmailAddress]
    [Display(Name = "Email")]
    [Remote("IsEmailJustPresent", "Home")]
    public string Email { get; set; }
}

Ich habe auch verwendet eine kendo.beobachtbar ist, so dass ich aktivieren/deaktivieren Sie die Schaltfläche weiter auf der Grundlage der überprüfung Wert.

In der isEnabled-Funktion, die Sie sehen, ich mache var x = $("#divValidator1").Daten("kendoValidator"); aber es gibt immer true (scheint nur überprüfen Sie das required-Attribut).

Zu erreichen, die Lösung, die ich begann von hier

Wenn Sie wollen, es ist ein komplexeres Beispiel, das ich erstellt habe auf git , das schließt den Assistenten werde ich brauchen in meinem letzten Projekt