/// <inheritdoc /> /// <remarks>Does nothing if <see cref="For"/> is <c>null</c>.</remarks> public override void Process(TagHelperContext context, TagHelperOutput output) { if (context == null) { throw new ArgumentNullException(nameof(context)); } if (output == null) { throw new ArgumentNullException(nameof(output)); } IPlatformServices platFormServices = ViewContext.ViewBag.PlatFormServices; List <SelectListItem> selectItems = null; if (!string.IsNullOrEmpty(CodeList)) { selectItems = platFormServices.GetPresentationCodelist(CodeList, TextName, ValueName); } // Ensure GenerateSelect() _never_ looks anything up in ViewData. var items = Enumerable.Empty <SelectListItem>(); if (selectItems != null && selectItems.Count > 0) { items = selectItems; } if (For == null) { var options = Generator.GenerateGroupsAndOptions(optionLabel: null, selectList: items); output.PostContent.AppendHtml(options); return; } var tagBuilder = Generator.GenerateSelect( ViewContext, For.ModelExplorer, optionLabel: null, expression: For.Name, selectList: items, currentValues: _currentValues, allowMultiple: _allowMultiple, htmlAttributes: null); if (tagBuilder != null) { output.MergeAttributes(tagBuilder); output.PostContent.AppendHtml(tagBuilder.InnerHtml); } }