private async Task <string> buildValidationMessageHtml(ModelExplorer property, TweakingConfiguration tweakingConfig)
        {
            PropertyTweakingConfiguration propertyConfig = tweakingConfig.GetByPropertyFullName(property.GetFullName());

            TagHelper validationMessage = new ValidationMessageTagHelper(_htmlGenerator)
            {
                For         = new ModelExpression(property.GetFullName(), property),
                ViewContext = _viewContext
            };

            var errorClassName = propertyConfig?.ValidationClasses;

            if (string.IsNullOrEmpty(errorClassName))
            {
                errorClassName = "text-danger";
            }

            return(await GetGeneratedContentFromTagHelper("span",
                                                          TagMode.StartTagAndEndTag,
                                                          validationMessage,
                                                          new TagHelperAttributeList()
            {
                new TagHelperAttribute("class", propertyConfig?.ValidationClasses)
            }));
        }
        private async Task <string> buildInputHtml(ModelExplorer property, TweakingConfiguration tweakingConfig,
                                                   string inputType = "", string inputValue = "", bool radioChecked = false)
        {
            PropertyTweakingConfiguration propertyConfig = tweakingConfig.GetByPropertyFullName(property.GetFullName());

            if (propertyConfig == null || string.IsNullOrEmpty(propertyConfig.InputTemplatePath))
            {
                InputTagHelper input = new InputTagHelper(_htmlGenerator)
                {
                    For         = new ModelExpression(property.GetFullName(), property),
                    ViewContext = _viewContext
                };
                var attrs = new TagHelperAttributeList {
                    new TagHelperAttribute("class", $"form-control {propertyConfig?.InputClasses}")
                };

                if (!string.IsNullOrEmpty(inputType))
                {
                    input.InputTypeName = inputType;
                    input.Value         = inputValue;
                    // Setting the Type attributes requires providing an initialized
                    // AttributeList with the type attribute
                    attrs = new TagHelperAttributeList()
                    {
                        new TagHelperAttribute("class", $"{propertyConfig?.InputClasses}"),
                        new TagHelperAttribute("type", inputType),
                        new TagHelperAttribute("value", inputValue)
                    };
                    if (radioChecked)
                    {
                        attrs.Add(new TagHelperAttribute("checked", "checked"));
                    }
                }

                AutoCompleteAttribute autoComplete;
                if (property.HasAutoComplete(out autoComplete))
                {
                    attrs.AddClass("autocomplete");
                    attrs.Add(getAutoCompleteDataAttribute(autoComplete, property.Container));
                }

                return(await GetGeneratedContentFromTagHelper("input",
                                                              TagMode.SelfClosing,
                                                              input,
                                                              attributes : attrs
                                                              ));
            }
            else
            {
                return(renderInputTemplate(property, propertyConfig.InputTemplatePath));
            }
        }
        private async Task <string> buildLabelHtml(ModelExplorer property, TweakingConfiguration tweakingConfig)
        {
            TagHelper label = new LabelTagHelper(_htmlGenerator)
            {
                For         = new ModelExpression(property.GetFullName(), property),
                ViewContext = _viewContext
            };

            PropertyTweakingConfiguration propertyConfig = tweakingConfig
                                                           .GetByPropertyFullName(property.GetFullName());

            return(await GetGeneratedContentFromTagHelper(
                       "label",
                       TagMode.StartTagAndEndTag, label,
                       new TagHelperAttributeList()
            {
                new TagHelperAttribute("class", propertyConfig?.LabelClasses)
            }));
        }
 public void Add(PropertyTweakingConfiguration propertyConfig)
 {
     _propertyEntries.Add(propertyConfig);
 }