前一陣子開始學習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程式碼可以參考:
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時,將裡面的資訊輸出給使用者喔!!
小小筆記~就不提供其他的範例啦!!