MVC - 模糊事件的远程验证

MVC - Remote validation for the blur event

我试图通过在文本框失去焦点时读取后端数据库来验证输入到网页中的代码是否有效。我能够在控制器中执行代码,但由于某种原因,模型对象没有传递给控制器​​方法。

文本框定义...

<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);
    }

执行了控制器代码,但在输入 HSDRepCode 并跳至下一个文本框后,leadInfo 对象为空。

为什么模型没有传递给控制器​​代码?

谢谢, 加里

模型变量没有 serialize() 方法,这个方法只是用于表单元素。 尝试从此行中删除单引号:var model = @Html.Raw(Json.Encode(Model)); 现在将模型对象作为数据发送: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>