protected DivTag BuildDiv()
        {
            var divTag = new DivTag("imageDiv");

            divTag.Attr("title", _toolTip);
            divTag.AddClasses(_divCssClasses);
            return(divTag);
        }
Exemple #2
0
        protected override HtmlTag CreateTag()
        {
            var label = new HtmlTag("label").Attr("for", _id);

            if (_mandatory && !_control.HandlesMandatoryInline())
            {
                label.Append(NewMandatory());
            }

            label.Append(new HtmlTag("span").Text(_labelText));

            var controlTag   = _control.GenerateTag(_mandatory);
            var inputWrapper = new DivTag().AddClasses("input-wrapper").Append(controlTag);

            var formGroup = new DivTag()
                            .Id(_id + "_FormGroup")
                            .AddClasses("form-group")
                            .Append(label)
                            .Append(inputWrapper);

            if (!string.IsNullOrWhiteSpace(_hintHtml))
            {
                var hint = new HtmlTag("p").AddClasses("help-block").AppendHtml(_hintHtml);
                label.Append(hint);
            }

            if (_controlWidth.HasValue && _controlWidth.Value != ControlWidth.Max)
            {
                inputWrapper.AddClass("control-width-" + _controlWidth.Value.ToString().ToLower());
            }

            if (_initiallyHidden)
            {
                formGroup.AddClasses("initially-hidden");
            }

            if (!_visible)
            {
                formGroup.Style("display", "none");
            }

            if (!string.IsNullOrWhiteSpace(_ajaxOnChangeAction))
            {
                formGroup.Attr("data-ajax-change", UrlHelper.Content(_ajaxOnChangeAction));
            }

            return(formGroup);
        }
        public static ScopedHtmlHelper <T> VisibleWhenChecked <T>(this HtmlHelper <T> helper, Expression <Func <T, bool> > property, bool visible, Action <HtmlTag> mutator = null)
        {
            var propertyName = property.GetExpressionText();
            var name         = helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(propertyName);

            var modelChecked = helper.ViewData.ModelState.ContainsKey(name);

            if (!modelChecked)
            {
                var modelValue = ModelMetadata.FromLambdaExpression(property, helper.ViewData).Model;
                modelChecked = modelValue != null && (bool)modelValue;
            }

            var container = new DivTag().NoClosingTag();

            if (visible && !modelChecked || !visible && modelChecked)
            {
                container.AddClasses("show-hide-hidden");
            }

            if (visible)
            {
                container.Attr("data-checkbox-checked-show", name);
            }
            else
            {
                container.Attr("data-checkbox-checked-hide", name);
            }

            if (mutator != null)
            {
                mutator(container);
            }

            helper.ViewContext.Writer.Write(container.ToHtmlString());

            return(new ScopedHtmlHelper <T>(helper, () =>
            {
                helper.ViewContext.Writer.Write($"</{container.TagName()}>");
            }));
        }
        public static ScopedHtmlHelper <T> VisibleWhenValue <T>(this HtmlHelper <T> helper, Expression <Func <T, bool?> > property, string value, Action <HtmlTag> mutator = null)
        {
            var propertyName = property.GetExpressionText();
            var name         = helper.ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldName(propertyName);

            string modelValue = null;
            var    modelState = helper.ViewData.ModelState;

            if (modelState.ContainsKey(name))
            {
                modelValue = (modelState[name].Value?.AttemptedValue ?? "").ToString();
            }
            else
            {
                modelValue = (ModelMetadata.FromLambdaExpression(property, helper.ViewData).Model ?? "").ToString();
            }

            var container = new DivTag().NoClosingTag();

            if (modelValue != value)
            {
                container.AddClasses("show-hide-hidden");
            }

            container.Attr("data-radio-show-name", name);
            container.Attr("data-radio-show-value", value);

            if (mutator != null)
            {
                mutator(container);
            }

            helper.ViewContext.Writer.Write(container.ToHtmlString());

            return(new ScopedHtmlHelper <T>(helper, () =>
            {
                helper.ViewContext.Writer.Write($"</{container.TagName()}>");
            }));
        }