ASP.NET MVC2 获取ModelState中的验证错误提示
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;
});
具体的就不解释了,自己能看懂就行了。