asp.net mvc内置的数据验证功能为我们提供了一个非常方便的数据验证体验,但是如果我们通过Ajax方式访问我们的Action并且返回验证的错误提示就比较麻烦了,经过反复实验终于找了一个解决方法,特此记录下来以备忘。
Action代码
代码
1
[HttpPost]
2 public ActionResult CreateComment(Comment comment)
3 {
4 if ( ! ModelState.IsValid)
5 {
6 List < string > sb = new List < string > ();
7 // 获取所有错误的Key
8 List < string > Keys = ModelState.Keys.ToList();
9 // 获取每一个key对应的ModelStateDictionary
10 foreach (var key in Keys)
11 {
12 var errors = ModelState[key].Errors.ToList();
13 // 将错误描述添加到sb中
14 foreach (var error in errors)
15 {
16 sb.Add(error.ErrorMessage);
17 }
18 }
19 return Json(sb);
20 }
21 else
22 {
23 return Json(commentRepository.InsertComment(comment));
24 }
25 }
2 public ActionResult CreateComment(Comment comment)
3 {
4 if ( ! ModelState.IsValid)
5 {
6 List < string > sb = new List < string > ();
7 // 获取所有错误的Key
8 List < string > Keys = ModelState.Keys.ToList();
9 // 获取每一个key对应的ModelStateDictionary
10 foreach (var key in Keys)
11 {
12 var errors = ModelState[key].Errors.ToList();
13 // 将错误描述添加到sb中
14 foreach (var error in errors)
15 {
16 sb.Add(error.ErrorMessage);
17 }
18 }
19 return Json(sb);
20 }
21 else
22 {
23 return Json(commentRepository.InsertComment(comment));
24 }
25 }
JavaScript代码
代码
$(
"
#commentform
"
).submit(
function
() {
$.ajax({
type: " POST " ,
url: " /AjaxResult/CreateComment/ " ,
data: $( this ).serialize(),
dataType: " json " ,
success: function (data) {
if (data == true ) {
alert( " 成功 " );
ShowPage(articleID, pageSize, 1 );
}
else if (data != true && data != false ) {
var result = "" ;
for ( var i in data) {
result = result + data[i] + " \r\n " ;
}
alert(result);
}
},
global: false
});
return false ;
});
$.ajax({
type: " POST " ,
url: " /AjaxResult/CreateComment/ " ,
data: $( this ).serialize(),
dataType: " json " ,
success: function (data) {
if (data == true ) {
alert( " 成功 " );
ShowPage(articleID, pageSize, 1 );
}
else if (data != true && data != false ) {
var result = "" ;
for ( var i in data) {
result = result + data[i] + " \r\n " ;
}
alert(result);
}
},
global: false
});
return false ;
});
具体的就不解释了,自己能看懂就行了。