asp.net mvc3 資料驗證(四)—Remote驗證的一個注意事項

來源:互聯網
上載者:User
        前幾篇把asp.net mvc3 中基於Model的主要資料驗證的方法都已經講完了,本節純粹只是講一個我曾經遇到的問題,因為和資料驗證相關,所以就放在了這系列的文章中。        經過前幾篇文章的分享,大家應該覺得asp.net 內建的Remote遠端資料註解比較好用,但是我在實際使用中卻遇到了問題。        首先,一般來說對於一個屬性的驗證可能需要不止一個的遠程驗證,比如對於使用者名稱來說,我們需要對於它的長度做一些限制,這個可以通過StringLength特性來解決;同時還需要驗證使用者名稱不能重複,這個就需要通過Remote特性來解決。        現在需要再添加一個驗證,那就是使用者名稱不能包含違禁詞。比如......(比較敏感,就不寫了。。。^_^),違禁詞儲存在資料庫中。剛開始我覺得這個也簡單,再加個Remote驗證不就解決了麼。。。童鞋們,有時候我們覺得很簡單就能辦到的事情,如果不做,永遠不知道你能不能辦到。所以建議大家,遇到事情不要拖拉,儘快做好。        劈裡啪啦,很快就把驗證的方法寫好了,然後加到Model中一看傻眼了。。。        原來不支援同一個屬性有兩個Remote驗證。。。         這個時候該怎麼辦呢,嘗試將兩個驗證寫在同一個Remote中,但是這樣的話只能顯示一個ErrorMessage,被否決。(但是的我以為Remote特性的方法只能返回一個bool值,不能返回ErrorMessage)。        然後我就在cnblogs、csdn以及百度知道發帖詢問,大多數的回答沒有說到重點。         由於時間緊(也不是因為時間緊,總不能讓這麼一個小驗證跟經理說搞個一整天吧),所以就自己寫了個自訂驗證解決。        事情雖然是解決了,但是總覺得微軟設計的時候總不會這麼傻叉,連這點都沒想到。但是查資料也沒查到啥,之後就一直放著。         直到昨天,csdn上的一哥們說Remote驗證可以自訂ErrorMessage,我才恍然大悟,我原來一直以為只能返回true或false的。        接下來就很簡單了,花了5分鐘的時間找到了返回ErrorMessage的方法,原來驗證為false時不用返回bool值,可以直接返回ErrorMessage。方法如下:
        public JsonResult CheckUserName(string userName)        {            if (IsUniqueName(userName) && IsForbiddenName(userName))            {                return Json(true, JsonRequestBehavior.AllowGet);            }            else if (!IsUniqueName(userName))            {                return Json("使用者名稱不唯一!", JsonRequestBehavior.AllowGet);            }            else            {                return Json("使用者名稱不包含違禁詞!", JsonRequestBehavior.AllowGet);            }        }

 

        這樣就可以完美解決需要多個Remote驗證的問題了。        雖然問題解決了,但是仍然要吐槽下微軟,幹嘛不能多個Remote驗證,吧這麼多的邏輯都放在一個方法中容易繞暈額。。。         雖然這是個小問題,但是從中至少得到了兩點啟示:            1、看到的問題不可怕,可怕的是有問題但是我們沒有看到;            2、很多事情,只要你堅持,總會等到柳暗花明的一天。   asp.net mvc3 資料驗證的前幾篇文章:asp.net mvc3 的資料驗證(一)                    asp.net mvc3 資料驗證(二)——錯誤資訊的自訂及其本地化                    asp.net mvc3 資料驗證(三)—自訂資料註解
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.