获取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());
}
{
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
┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉
赠人玫瑰 手留余香
┉┉┉┉┉┉┉┉┉┉┉┉┉┉┉