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);
        }