ASP.NET MVC模型部分驗證

在很多情況下,我們爲了代碼的複用可能會存在ViewModel共用的情形。比方說,web應用中常常會遇到的一個需求就是用戶找回密碼的功能。用戶首先要驗證通過驗證郵箱(通常是用戶名)來獲取驗證碼,然後再進行密碼重置。那麼此時假設需要4個字段:Email、Password、ConfirmPassword、VerifiCode。那麼就需要2個單獨的頁面中隊這一個model進行分步驗證了。google了一下,發現了一些有價值的解決方案。爲了說明問題,寫了一個小的Demo如下:

ViewModel:

 View Code

2個簡單的頁面一個驗證郵箱、一個驗證重置的密碼,就不列出。

先來看方案1:

 View Code

當然如果你不想每次都定義一些需要篩選掉的字段的集合。你可以這麼做:

 View Code

思路很簡單就是從模型中移除不需要驗證的元素。
這個方法雖然有效,但是它沒有分離應用程序的關注點。當需要忽略的字段一旦很多的時候可能就會變得很繁瑣(當然如果需要驗證的字段很少,你也可以這麼做:ModelState.IsValidField(""))。

再來看方案2:

 View Code

控制器代碼:

思路也很簡單:就是使用過濾器,在Action執行過程中移除未提供的字段。

最後來看方案3:

 View Code

做法和上面的方案2一樣,就是通過過濾器移除掉不需要驗證的字段。它們其實是一樣的。只不過方案2是通過ValueProvider值提供程序來檢索對應的字段是否有值來實現篩選的。
當然期待希望能有更多滴解決辦法!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章