Пример #1
0
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            context.ThrowIfNull();
            output.ThrowIfNull();

            var selectListItems = new List <SelectListItem>();
            var kvList          = For?.Metadata.EnumGroupedDisplayNamesAndValues;

            if (kvList != null)
            {
                selectListItems = For.Metadata.EnumGroupedDisplayNamesAndValues.Select(a => new SelectListItem
                {
                    Text  = a.Key.Name.ToString(),
                    Value = a.Value.TryInt().ToString()
                }).ToList();
            }

            if (kvList == null && Data != null)
            {
                selectListItems = ((IEnumerable <SelectListItem>)Data).ToList();
            }

            if (!DefaultText.IsNullOrWhiteSpace())
            {
                selectListItems.Insert(0, new SelectListItem {
                    Text = DefaultText, Value = ""
                });
            }

            var idStr      = TagBuilder.CreateSanitizedId(For.Name, _generator.IdAttributeDotReplacement);
            var attributes = new Dictionary <string, object>
            {
                { "lay-search", "" },
                { "lay-filter", idStr }
            };

            var cValue = For.Metadata.IsEnum ? ((int)(For.Model ?? 0)).ToStr() : For.Model.ToStr();

            selectListItems.ForEach(item =>
            {
                item.Selected = For.Model != null && item.Value == cValue;
            });

            var tagBuilder = _generator.GenerateSelect(ViewContext, For.ModelExplorer, null, For.Name, selectListItems, null, false, attributes);

            var outpuHtml = $@"
              <label class='layui-form-label'>{Text ?? For.Metadata.DisplayName}</label>
            <div class='layui-input-block'>
              {tagBuilder.GetString().Replace("&amp;nbsp;", "&nbsp;")}
            </div>";

            output.TagName = "div";
            output.TagMode = TagMode.StartTagAndEndTag;
            output.Attributes.Add("id", $"{idStr}_div");
            output.Attributes.Add("class", InputDisplay.GetDisplayName());
            output.Content.SetHtmlContent(outpuHtml);
            if (kvList == null && !Url.IsNullOrEmpty())
            {
                output.PostElement.SetHtmlContent($@"<script type='text/javascript'>
                 $(function () {{
                    $('#{idStr}').bindSelectData('{Url}','{For.Model}');
                    }});
                </script>");
            }
        }
Пример #2
0
        public override void Process(TagHelperContext context, TagHelperOutput output)
        {
            context.ThrowIfNull();
            output.ThrowIfNull();

            var selectListItems = new List <SelectListItem>();
            var kvList          = For?.Metadata.EnumGroupedDisplayNamesAndValues;

            if (kvList != null)
            {
                selectListItems = For.Metadata.EnumGroupedDisplayNamesAndValues.Select(a => new SelectListItem
                {
                    Text  = a.Key.Name.ToString(),
                    Value = a.Value.ToString()
                }).ToList();
            }

            if (kvList == null && Data != null)
            {
                selectListItems = ((IEnumerable <SelectListItem>)Data).ToList();
            }

            if (!DefaultText.IsNullOrWhiteSpace())
            {
                selectListItems.Insert(0, new SelectListItem {
                    Text = DefaultText, Value = ""
                });
            }

            var idStr      = NameAndIdProvider.CreateSanitizedId(ViewContext, For.Name, _generator.IdAttributeDotReplacement);
            var attributes = new Dictionary <string, object>
            {
                { "xm-select", idStr },
                { "xm-select-skin", "default" }
            };

            IList l = new ArrayList();

            if (For.Model != null)
            {
                l = (IList)For.Model;
            }

            selectListItems.ForEach(item =>
            {
                item.Selected = For.Model != null && l.Contains(item.Value);
            });

            var tagBuilder = _generator.GenerateSelect(ViewContext, For.ModelExplorer, null, For.Name, selectListItems, null, false, attributes);

            var outpuHtml = $@"
              <label class='layui-form-label'>{Text ?? For.Metadata.DisplayName}</label>
            <div class='layui-input-block'>
              {tagBuilder.GetString().Replace("&amp;nbsp;", "&nbsp;")}
            </div>";

            output.TagName = "div";
            output.TagMode = TagMode.StartTagAndEndTag;
            output.Attributes.Add("id", $"{idStr}_div");
            output.Attributes.Add("class", InputDisplay.GetDisplayName());
            output.Content.SetHtmlContent(outpuHtml);

            var jsValue = l.Cast <object>().Aggregate("", (current, t) => current + (t + ",")).TrimEnd(',');

            if (kvList == null && !Url.IsNullOrEmpty())
            {
                output.PostElement.SetHtmlContent($@"<script type='text/javascript'>
                 $(function () {{
                    $('#{idStr}').bindMultiSelectData('{Url}','{jsValue}','{idStr}');
                    }});
                </script>");
            }
        }