protected void RenderValidation(TagHelperContext context, TagHelperOutput output)
        {
            if (AspFor != null)
            {
                if (IsNeedValidation.GetValueOrDefault())
                {
                    foreach (TagHelperAttribute attr in MvcTagHelperOutput.Attributes)
                    {
                        if (attr.Name.StartsWith("data-"))
                        {
                            output.MergeAttribute(attr.Name, attr.Value);
                        }
                    }
                }

                if (IsNeedValidationMessage.GetValueOrDefault())
                {
                    //var builder = HtmlGenerator.GenerateValidationMessage(ViewContext, AspFor.ModelExplorer, AspFor.Name, null, "", new { @class = "help-block" });

                    var builder = new TagBuilder("div")
                    {
                        TagRenderMode = TagRenderMode.Normal
                    };
                    builder.AddCssClass("help-block");
                    builder.AddCssClass("invalid-feedback");
                    builder.MergeAttribute("data-valmsg-for", AspFor.Name);
                    builder.MergeAttribute("data-valmsg-replace", "true");

                    // Error Message
                    var modelState = ViewContext.ViewData.ModelState.FirstOrDefault(k => k.Key == AspFor.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");
                    }

                    output.PostElement.AppendHtml(builder);
                }
            }
        }
        protected void PrepareForInputGroup(TagHelperContext context, TagHelperOutput output)
        {
            if (InputGroupContext != null)
            {
                if (LabelText.IsNotNullOrEmpty())
                {
                    InputGroupContext.LabelText = LabelText;
                    LabelText = null;
                }

                if (HelpText.IsNotNullOrEmpty())
                {
                    InputGroupContext.HelpText = HelpText;
                    HelpText = null;
                }

                if (AspFor != null)
                {
                    if (IsNeedValidation.GetValueOrDefault() || IsNeedValidationMessage.GetValueOrDefault())
                    {
                        InputGroupContext.AspFor             = AspFor;
                        InputGroupContext.MvcTagHelperOutput = MvcTagHelperOutput;

                        InputGroupContext.IsNeedValidation        = IsNeedValidation;
                        InputGroupContext.IsNeedValidationMessage = IsNeedValidationMessage;

                        IsNeedValidationMessage = false;
                    }
                }

                if (IsFormHorizontal)
                {
                    InputGroupContext.IsFormHorizontal = IsFormHorizontal;
                    IsFormHorizontal = false;
                }
            }
        }