MVC - 模糊事件的远程验证

时间:2015-03-23 17:44:42

标签: javascript asp.net-mvc validation unobtrusive-validation

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

文本框定义......

<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对象全为空。

为什么不将模型传递给控制器​​代码?

谢谢, 加里

1 个答案:

答案 0 :(得分:1)

模型变量没有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>