ASP.NET Web API 2 - Ajax发布JQuery不显眼的验证错误

时间:2017-10-30 17:45:29

标签: jquery asp.net ajax asp.net-web-api

我在bootstrap模式中有以下形式,我通过ajax提交给web api控制器。如果模型状态无效,我想在输入字段下面显示错误。我已经定义了htmlhelper @Html.ValidationMessageFor(m => m.Name),但邮件没有出现在那里?

<form id="form1" method="post">

           @Html.LabelFor(m => m.Name)
           @Html.TextBoxFor(m => m.Name)
           @Html.ValidationMessageFor(m => m.Name)

           <button type="submit" >Save</button>
</form>

<script>
    $("#form1").submit(function() {

            if (!$(this).valid()) {
               return false;
            }  

            $.post(baseUrl + "api/somecontroller", $('#form1').serialize())
                .done(function (data) {
                   // do some stuff

                   // hide modal
                   $('#form1').modal('hide');
                })
                .fail(function (jqXhr) {
                    var data = JSON.parse(jqXhr.responseText), errors = {};

                    $.each(data.ModelState, function (key, value) {
                        var pieces = key.split('.');
                        key = pieces[pieces.length - 1];
                        errors[key] = value;
                    });

                    validator.showErrors(errors);
                });
            return false;
        });

</script>

在jqxhr.responseText中,我得到以下内容:

{
   "message": "The request is invalid.",
   "modelState": {
     "person.Name": [
      "The Name field is required."
      ]
    }
}

*更新*

使用以下链接中的代码Client Side Validation with WebApi

我现在收到错误:validator is not defined

在调用ajax post方法之前,表单似乎没有验证,尽管调用了以下内容:

if (!$(this).valid()) {
    return false;
}

注意我正在使用这个Web Api内部和MVC项目。

0 个答案:

没有答案