I have a business requirement to only show the first 5 errors in the @Html.ValidationSummary. I have created a ValidationSummaryLimited htmlhelper but I cannot figure out how to implement the excludePropertyErrors piece.
public static string ValidationSummaryLimited(this HtmlHelper helper, bool excludePropertyErrors = false, string message = "")
{
const int maximumValidations = 5;
if (helper.ViewData.ModelState.IsValid)
return string.Empty;
StringBuilder sb = new StringBuilder();
if (!string.IsNullOrEmpty(message))
{
sb.AppendFormat("<span>{0}</span>{1}", helper.Encode(message), System.Environment.NewLine);
}
sb.AppendLine("<div class=\"validation-summary-errors\" data-valmsg-summary=\"true\">");
sb.AppendLine("\t<ul>");
int count = 0;
foreach (var key in helper.ViewData.ModelState.Keys)
{
foreach (var err in helper.ViewData.ModelState[key].Errors)
{
count++;
sb.AppendFormat("\t\t<li>{0}</li>{1}", helper.Encode(err.ErrorMessage),System.Environment.NewLine);
if (count >= RVConstants.MaximumValidationErrors)
{
sb.AppendFormat("\t\t<li>Maximum of {0} errors shown</li>{1}",
maximumValidations,
System.Environment.NewLine);
break;
}
}
if (count >= maximumValidations)
break;
}
return sb.ToString();
}