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("&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>"); } }
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("&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>"); } }