获取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

 

posted on 2011-11-02 11:27  andyran  阅读(1203)  评论(0编辑  收藏  举报

导航