ASP.NET MVC2 擷取ModelState中的驗證錯誤提示

來源:互聯網
上載者:User

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         }

 

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;
            });

 

 

具體的就不解釋了,自己能看懂就行了。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.