public static IHtmlContent Generate(FormTagHelperBase tagHelper) { var builder = new TagBuilder("div") { TagRenderMode = TagRenderMode.Normal }; builder.AddCssClass("invalid-feedback"); builder.MergeAttribute("data-valmsg-for", tagHelper.Id); builder.MergeAttribute("data-valmsg-replace", "true"); // Error Message var modelState = tagHelper.ViewContext.ViewData.ModelState.FirstOrDefault(k => k.Key == tagHelper.For.Metadata.PropertyName).Value; if (modelState != null && modelState.ValidationState == ModelValidationState.Invalid) { builder.AddCssClass("field-validation-error"); builder.InnerHtml.Append(modelState.Errors.FirstOrDefault()?.ErrorMessage); } else { builder.AddCssClass("field-validation-valid"); } return(builder); }
/// <summary> /// Checks if the bounded property of the tag helper is valid on a POST request. /// </summary> /// <param name="tagHelper">The tag helper.</param> /// <returns>Returns true if the bounded property is valid,</returns> /// <remarks>If no property is bound to the tag helper or the request is not a POST, the result is true.</remarks> public static bool IsPostValid(this FormTagHelperBase tagHelper) { if (tagHelper.For != null && tagHelper.ViewContext.HttpContext.Request.Method == "POST") { return(tagHelper.ViewContext.ViewData.ModelState.GetFieldValidationState(tagHelper.For.Metadata.PropertyName) == ModelValidationState.Valid); } return(true); }
/// <summary> /// Checks if the bounded property of the tag helper is valid. /// </summary> /// <param name="tagHelper">The tag helper.</param> /// <returns>Returns true if the bounded property is valid,</returns> /// <remarks>If no property is bound to the tag helper, the result is true.</remarks> public static bool IsValid(this FormTagHelperBase tagHelper) { if (tagHelper.For != null) { return(tagHelper.ViewContext.ViewData.ModelState.GetFieldValidationState(tagHelper.For.Metadata.PropertyName) == ModelValidationState.Valid); } return(true); }