/// <summary>
        /// Creates a Validation Summary
        /// </summary>
        /// <typeparam name="TViewModel"></typeparam>
        /// <param name="html"></param>
        /// <param name="headerText">The header message to display introducing the errors</param>
        /// <param name="mode">The error display mode</param>
        /// <returns></returns>
        public static IHtmlString ValidationSummary <TViewModel>(this HtmlHelper <TViewModel> html, string headerText, ValidationSummaryMode mode)
        {
            if (!html.ViewData.ModelState.IsValid)
            {
                var builder = new StringBuilder("<div class=\"validation-summary\">");

                var pTag = new TagBuilder("p", new { @class = "validation-summary-message" });
                pTag.InnerHtml = html.Encode(headerText);

                builder.Append(pTag.ToString());

                if (mode != ValidationSummaryMode.HeaderOnly)
                {
                    builder.Append("<ul class=\"validation-summary-errors\">");

                    foreach (var key in html.ComponentFactory().ErrorProvider.AllErrors.Keys)
                    {
                        foreach (var error in html.ComponentFactory().ErrorProvider.AllErrors[key])
                        {
                            if (key == string.Empty || mode == ValidationSummaryMode.List)
                            {
                                builder.Append("<li>" + error + "</li>");
                            }
                            else
                            {
                                builder.Append("<li><a href=\"#" + key + "\" title=\"Click to jump to erroneous field\">" + error + "</a></li>");
                            }
                        }
                    }

                    builder.Append("</ul>");
                }

                builder.Append("</div>");

                return(new HtmlString(builder.ToString()));
            }

            return(null);
        }
 /// <summary>
 /// Creates a Validation Summary
 /// </summary>
 /// <typeparam name="TViewModel"></typeparam>
 /// <param name="html"></param>
 /// <param name="mode">The error display mode</param>
 /// <returns></returns>
 public static IHtmlString ValidationSummary <TViewModel>(this HtmlHelper <TViewModel> html, ValidationSummaryMode mode)
 {
     return(html.ValidationSummary("There were the following problems with the data you entered:", mode));
 }