protected void RenderAspFor(TagHelperContext context, TagHelperOutput output)
        {
            if (AspFor != null)
            {
                var buffer = new TagHelperOutput("input", new TagHelperAttributeList(), (cache, encoder) => Task.FromResult <TagHelperContent>(new DefaultTagHelperContent()));

                var helper = new InputTagHelper(HtmlGenerator);
                helper.ViewContext = ViewContext;
                helper.For         = AspFor;
                //helper.InputTypeName = InputType;
                helper.Init(context);
                helper.Process(context, buffer);

                MvcTagHelperOutput = buffer;
                Debug.WriteLine(MvcTagHelperOutput.ToTagHelperContent().GetContent());

                foreach (TagHelperAttribute attr in buffer.Attributes)
                {
                    if (!attr.Name.StartsWith("data-"))
                    {
                        output.MergeAttribute(attr.Name, attr.Value);
                    }
                }

                if (string.IsNullOrEmpty(LabelText))
                {
                    LabelText = AspFor.Metadata.DisplayName ?? AspFor.Metadata.PropertyName;
                }

                if (string.IsNullOrEmpty(HelpText))
                {
                    HelpText = AspFor.Metadata.Description;
                }
            }
        }
Beispiel #2
0
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            string input = "";

            string labelCss   = "col-sm-4";
            string controlCss = "col-sm-8";

            var helper = new InputTagHelper(Generator);

            helper.ViewContext = ViewContext;
            helper.For         = Value;

            helper.Init(context);
            helper.Process(context, output);

            using (var writer = new StringWriter())
            {
                output.TagName = "input";
                if (output.Attributes.ContainsName("Value"))
                {
                    var val = output.Attributes["Value"];
                    if (val.Value?.ToString().ToLower() == "true")
                    {
                        output.Attributes.Add("checked", "");
                    }
                }

                output.WriteTo(writer, HtmlEncoder.Default);
                input = writer.ToString().Replace("text", "checkbox");
            }

            output.Attributes.Clear();
            output.PostContent.Clear();
            output.Content.Clear();

            var label        = Label ?? Value?.Metadata?.DisplayName ?? Value?.Name ?? "";
            var labelContent = $"<label for='{Value.Name}' class='{labelCss} col-form-label'>{label}</label>";

            var validateBuilder = Generator.GenerateValidationMessage(
                ViewContext,
                Value.ModelExplorer,
                Value.Name,
                message: null,
                tag: null,
                htmlAttributes: null);

            var divBuilder = new TagBuilder("div");

            divBuilder.AddCssClass(controlCss);
            divBuilder.AddCssClass("col-form-checkbox");
            divBuilder.InnerHtml.AppendHtml(input);
            divBuilder.InnerHtml.AppendHtml(validateBuilder);

            output.TagName = "div";
            output.Attributes.Add("class", "form-group row");

            output.Content.AppendHtml(labelContent);
            output.Content.AppendHtml(divBuilder);
        }
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            string input = "";

            string labelCss   = "col-sm-4";
            string controlCss = "col-sm-8";

            var helper = new InputTagHelper(Generator);

            helper.ViewContext = ViewContext;
            helper.For         = Value;

            helper.Init(context);
            helper.Process(context, output);

            using (var writer = new StringWriter())
            {
                output.TagName = "input";
                output.Attributes.Add("class", "form-control");
                output.Attributes.Add("placeholder", Placeholder);

                output.WriteTo(writer, HtmlEncoder.Default);
                input = writer.ToString().Replace("number", "text");
            }

            output.Attributes.Clear();
            output.PostContent.Clear();
            output.Content.Clear();

            string req = (input.IndexOf("data-val-required") > -1) ? "<span class='required'>*</span>" : "";

            var label        = Label ?? Value?.Metadata?.DisplayName ?? Value?.Name ?? "";
            var labelContent = $"<label for='{Value.Name}' class='{labelCss} col-form-label'>{req}{label}</label>";

            var validateBuilder = Generator.GenerateValidationMessage(
                ViewContext,
                Value.ModelExplorer,
                Value.Name,
                message: null,
                tag: null,
                htmlAttributes: null);

            var divBuilder = new TagBuilder("div");

            divBuilder.AddCssClass(controlCss);
            divBuilder.InnerHtml.AppendHtml(input);
            divBuilder.InnerHtml.AppendHtml(validateBuilder);

            output.TagName = "div";
            output.Attributes.Add("class", "form-group row");

            output.Content.AppendHtml(labelContent);
            output.Content.AppendHtml(divBuilder);
        }
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            var helper = new InputTagHelper(Generator);

            helper.ViewContext = ViewContext;
            helper.For         = For;
            helper.Init(context);

            helper.Process(context, output);

            string name = For.Name.Substring(For.Name.LastIndexOf('.') + 1).ToLower();

            output.Attributes.SetAttribute(":id", $"`${{id}}.{ name }`");
            output.Attributes.SetAttribute(":name", $"`${{id}}.{ name }`");
        }
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            string input = "";

            var helper = new InputTagHelper(Generator);

            helper.ViewContext = ViewContext;
            helper.For         = Value;

            helper.Init(context);
            helper.Process(context, output);

            string ischecked = Value?.Model?.ToString() == "True" ? "checked='checked'" : "";

            input = $"<input type='checkbox' disabled='disabled' {ischecked} >";

            output.Attributes.Clear();
            output.PostContent.Clear();
            output.Content.Clear();

            var value = Value?.Model?.ToString();
            var label = Label ?? Value?.Metadata?.DisplayName ?? Value?.Name ?? "";

            var encoder = HtmlEncoder.Create(allowedRanges: new[] { UnicodeRanges.BasicLatin, UnicodeRanges.CjkUnifiedIdeographs });

            value = encoder.Encode(value ?? "");
            label = encoder.Encode(label ?? "");

            var labelContent = $"<label for='{Value.Name}' class='col-sm-4 col-form-label'>{label}</label>";
            var valueContent = $"<div class='col-sm-8 col-form-checkbox'>{input}</div>";

            output.TagName = "div";
            output.Attributes.Add("class", "form-group row");

            output.Content.AppendHtml(labelContent);
            output.Content.AppendHtml(valueContent);
        }