[ASP.Net][Memo] ModelStateExtensions for ASP.Net MVC3

前一陣子開始學習ASP.Net MVC3,不禁為MVC3裡面內建的許多方便的機制深感讚嘆,例如在Controller中對Model進行編輯所使用的Action預設範本,都會去檢查ModelState.IsValid,來確保Model的正確性。
這是個對開發者來說很方便的機制。然而,當ModelState.IsValid的值為False時,要慢慢去爬出ModelState中的每組值,就是一件有點累人的事了。

 

前一陣子開始學習ASP.Net MVC3,不禁為MVC3裡面內建的許多方便的機制深感讚嘆,例如在Controller中對Model進行編輯所使用的Action預設範本,都會去檢查ModelState.IsValid,來確保Model的正確性。

這是個對開發者來說很方便的機制。然而,當ModelState.IsValid值為False時,要慢慢去爬出ModelState中的每組值,就是一件有點累人的事了。

所幸,上網爬了爬文,找到了以下的Extension Method程式碼可以參考:

ModelStateExtensions.cs
public static class ModelStateExtensions
{
    public static string ExpendErrors( this System.Web.Mvc.Controller controller )
    {
        System.Text.StringBuilder errors = new System.Text.StringBuilder();
        foreach( var item in controller.ModelState.Values )
        {
            if( item.Errors.Count > 0 )
            {
                for( int i = item.Errors.Count - 1 ; i >= 0 ; i-- )
                {
                    errors.Append( item.Errors[ i ].ErrorMessage );
                    errors.Append( "<br/>" );
                }
            }
        }
        return errors.ToString();
    }
}

 

只要將這隻class放在Controllers資料夾中,就可以輕鬆的在每個Controller的Action裡叫用this.ExpendErrors()方法,來列出目前的Model中會造成ModelState.IsValid= false的相關屬性資料。

除了可以在除錯時使用,也可以在發生ModelState.IsValid= false時,將裡面的資訊輸出給使用者喔!!

 

小小筆記~就不提供其他的範例啦!!