MVC - удаленная проверка события размытия

Я пытаюсь проверить правильность введенного на веб-странице кода, читая базу данных бэкэнда, когда текстовое поле теряет фокус. Я могу выполнить код в контроллере, но по какой-то причине объект модели не передается в метод контроллера.

Определение текстового поля...

<div class="form-group">
    @Html.LabelFor(m => m.HSDRepCode)
    @Html.TextBoxFor(m => m.HSDRepCode, new { placeholder = "Enter your HSD Rep code...", @class = "contact-name"})
    @Html.ValidationMessageFor(m => m.HSDRepCode)
</div>

Код JavaScript для события размытия...

<script type="text/javascript">
    $("#HSDRepCode").blur(function () {
        var model = '@Html.Raw(Json.Encode(Model))';

        $.ajax({
            url: "/CRM/ValidateHSDRep",
            type: "POST",
            data: $("model").serialize(),
            dataType: "application/json"
            }).done(function( model ) {
                $("#HSFirstName").val(model.HSFirstName);
                $("#HSLastName").val(model.HSLastName);
                });
        });
    </script>

Код контроллера CRM...

public ActionResult ValidateHSDRep(LeadInfo leadInfo)
    {
        HSDRep hsdRep = new HSDRep();

        hsdRep = CRMModels.ValidateHSDRepCode(leadInfo.HSDRepCode);

        return Json(leadInfo);
    }

Код контроллера выполняется, но объект leadInfo становится пустым после ввода HSDRepCode и перехода к следующему текстовому полю.

Почему модель не передается в код контроллера?

Спасибо гэри

1 ответ

Решение

Переменная модели не имеет метода serialize(), этот метод предназначен только для использования с элементами форм. Попробуйте удалить одинарную кавычку из этой строки: var model = @Html.Raw(Json.Encode(Model)); Теперь отправьте объект модели в качестве data: model.

    <script type="text/javascript">
$("#HSDRepCode").blur(function () {
    var model = @Html.Raw(Json.Encode(Model));

    if(model == null) {
        model = {};
    }

    model.HSDRepCode = $(this).val();

    $.ajax({
        url: "/CRM/ValidateHSDRep",
        type: "POST",
        data: model,
        dataType: "application/json"
    }).done(function (model) {
        $("#HSFirstName").val(model.HSFirstName);
        $("#HSLastName").val(model.HSLastName);
    });
});
</script>
Другие вопросы по тегам