获取Controller.ModelState中的所有错误信息

利用MVC的实体验证框架,AJAX提交,返回错误信息。

扩展方法实现

 

public  static  class ModelStateExtensions
{
     public  static  string ExpendErrors( this System.Web.Mvc.Controller controller)
    {
        System.Text.StringBuilder sbErrors =  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--)
                {
                    sbErrors.Append(item.Errors[i].ErrorMessage);
                    sbErrors.Append( " <br/> ");
                }
            }
        }
         return sbErrors.ToString();
    }
}

// Linq版,效率不如循环遍历,有待优化
public  static  string ExpendErrors2( this Controller controller)
{
    System.Text.StringBuilder sbError =  new System.Text.StringBuilder();
    ( from key  in controller.ModelState.Keys
      where controller.ModelState[key].Errors.Count >  0
      select key)
     .Aggregate(sbError, (sb, key) =>
        {
             return controller.ModelState[key].Errors
                .Aggregate(sb, (sbChild, error) => sbChild.AppendFormat( " {0}<br/> ", error.ErrorMessage));
        });
     return sbError.ToString();
}

// 调用
if (ModelState.IsValid)
{
     // do something
     return Content( " 0 ");
}
else
{
     return Content( this.ExpendErrors());
}

 

原文: http://www.cnblogs.com/eyu/archive/2011/01/23/1942291.html

 

你可能感兴趣的:(controller)