Esempio n. 1
0
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            (_htmlHelper as IViewContextAware).Contextualize(ViewContext);
            var prefix = ViewContext.ViewData.TemplateInfo.HtmlFieldPrefix;

            var htmlId   = prefix.IsEmpty() ? ModelItem.Metadata.PropertyName : _htmlHelper.IdForModel() + "_" + ModelItem.Metadata.PropertyName;
            var htmlName = prefix.IsEmpty() ? ModelItem.Metadata.PropertyName : prefix + "." + ModelItem.Metadata.PropertyName;

            output.TagName = "div";
            output.TagMode = TagMode.StartTagAndEndTag;
            output.Attributes.Add("class", "input-group-btn");

            if (ItemList == null && ItemList2 == null)
            {
                var comboDataInfo = GetComboBoxDataSource(ModelItem.ModelExplorer);
                ItemList = comboDataInfo.ListItems;
            }

            var selectedText  = "";
            var selectedValue = 0;

            if (ModelItem.Model != null)
            {
                if (ModelItem.Model is int)
                {
                    selectedValue = int.Parse(ModelItem.Model.ToString());
                }
                else
                {
                    var ti = (int)ModelItem.Model;
                    selectedValue = ti;
                }
            }

            if (ItemList != null)
            {
                var it = ItemList.Where(d => d.Value == selectedValue.ToString()).FirstOrDefault();
                if (it == null)
                {
                    it = ItemList.FirstOrDefault();
                }
                if (it != null)
                {
                    selectedValue = int.Parse(it.Value);
                    selectedText  = it.Text;
                }
            }
            else if (ItemList2 != null)
            {
                var it = ItemList2.Where(d => d.Value == selectedValue.ToString()).FirstOrDefault();
                if (it == null)
                {
                    it = ItemList2.FirstOrDefault();
                }
                if (it != null)
                {
                    selectedValue = int.Parse(it.Value);
                    selectedText  = it.Text;
                }
            }

            var sbOptions = new StringBuilder();

            sbOptions.AppendLine($@"
<button type=""button"" class=""btn btn-outline-secondary btn-sm dropdown-toggle"" data-toggle=""dropdown"">
    <span id=""lbl{htmlId}"">{selectedText}</span> <span class=""caret""></span>
</button>
<div class=""dropdown-menu"">
");
            if (ItemList != null)
            {
                foreach (var item in ItemList)
                {
                    sbOptions.AppendLine($@"<a class=""dropdown-item"" href=""javascript:SelectComboGroup('{item.Text}', {item.Value}, '{htmlId}')"">{item.Text}</a>");
                }
            }
            else if (ItemList2 != null)
            {
                foreach (var item in ItemList2)
                {
                    sbOptions.AppendLine($@"<a class=""dropdown-item"" href=""javascript:SelectComboGroup('{item.Text}', {item.Value}, '{htmlId}')"">{item.Text}</a>");
                }
            }
            sbOptions.AppendLine($@"</div>
<input type=""hidden"" id=""{htmlId}"" name=""{htmlName}"" value=""{selectedValue}"" />");
            output.Content.SetHtmlContent(sbOptions.ToString());
        }