我在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项目。