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

文本框定义...

<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));
现在将模型对象作为数据发送:模型。

    <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>

关于javascript - MVC-模糊事件的远程验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29216878/

10-12 21:19