From 458c389aaee9118f27bda61420b7a9b2b5a75b4a Mon Sep 17 00:00:00 2001 From: sornaks Date: Tue, 15 Apr 2014 14:42:27 -0700 Subject: [PATCH] Port of changes for ValidationMessage from MVC. --- .../HtmlHelperValidationExtensions.cs | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/src/Microsoft.AspNet.Mvc.Core/Rendering/HtmlHelperValidationExtensions.cs b/src/Microsoft.AspNet.Mvc.Core/Rendering/HtmlHelperValidationExtensions.cs index c441b852e2..54f0d8d503 100644 --- a/src/Microsoft.AspNet.Mvc.Core/Rendering/HtmlHelperValidationExtensions.cs +++ b/src/Microsoft.AspNet.Mvc.Core/Rendering/HtmlHelperValidationExtensions.cs @@ -55,5 +55,40 @@ namespace Microsoft.AspNet.Mvc.Rendering return htmlHelper.ValidationSummary(excludePropertyErrors: false, message: message, htmlAttributes: htmlAttributes); } + + private IHtmlString BuildValidationMessage(string name, string message, IDictionary htmlAttributes) + { + var modelState = ModelState[name]; + IEnumerable errors = null; + if (modelState != null) + { + errors = modelState.Errors; + } + bool hasError = errors != null && errors.Any(); + if (!hasError && !UnobtrusiveJavaScriptEnabled) + { + // If unobtrusive validation is enabled, we need to generate an empty span with the "val-for" attribute" + return null; + } + else + { + string error = null; + if (hasError) + { + error = message ?? errors.First(); + } + + TagBuilder tagBuilder = new TagBuilder("span") { InnerHtml = Encode(error) }; + tagBuilder.MergeAttributes(htmlAttributes); + if (UnobtrusiveJavaScriptEnabled) + { + bool replaceValidationMessageContents = String.IsNullOrEmpty(message); + tagBuilder.MergeAttribute("data-valmsg-for", name); + tagBuilder.MergeAttribute("data-valmsg-replace", replaceValidationMessageContents.ToString().ToLowerInvariant()); + } + tagBuilder.AddCssClass(hasError ? ValidationMessageCssClassName : ValidationMessageValidCssClassName); + return tagBuilder.ToHtmlString(TagRenderMode.Normal); + } + } } }