/// <summary> /// Generate options /// </summary> /// <param name="items">Items used to generate options</param> /// <param name="selectedValue">Selected value</param> /// <param name="formatter">Formatter used to find label/value. May be null if the list contains <c>SelectListItem</c></param> /// <returns>Generated <c>option</c> tags</returns> protected IEnumerable <NestedTagBuilder> GenerateOptions(IEnumerable items, string selectedValue, ISelectItemFormatter formatter) { if (formatter == null) { if (!(items is IEnumerable <SelectListItem>)) { throw new InvalidOperationException("No formatter was specified and the list do not contain SelectListItems"); } return(GenerateOptions((IEnumerable <SelectListItem>)items, selectedValue)); } var listItems = new List <NestedTagBuilder>(); foreach (var item in items) { var tag = new NestedTagBuilder("option"); var listItem = formatter.Generate(item); tag.MergeAttribute("value", listItem.Value); if (listItem.Value == selectedValue || listItem.Selected) { tag.MergeAttribute("selected", "selected"); } tag.SetInnerText(listItem.Text); listItems.Add(tag); } return(listItems); }
/// <summary> /// Generate options /// </summary> /// <param name="items">Items used to generate options</param> /// <param name="selectedValue">Selected value</param> /// <param name="formatter">Formatter used to find label/value. May be null if the list contains <c>SelectListItem</c></param> /// <returns>Generated <c>option</c> tags</returns> protected IEnumerable<NestedTagBuilder> GenerateOptions(IEnumerable items, string selectedValue, ISelectItemFormatter formatter) { if (formatter == null) { if (!(items is IEnumerable<SelectListItem>)) throw new InvalidOperationException("No formatter was specified and the list do not contain SelectListItems"); return GenerateOptions((IEnumerable<SelectListItem>)items, selectedValue); } var listItems = new List<NestedTagBuilder>(); foreach (var item in items) { var tag = new NestedTagBuilder("option"); var listItem = formatter.Generate(item); tag.MergeAttribute("value", listItem.Value); if (listItem.Value == selectedValue || listItem.Selected) tag.MergeAttribute("selected", "selected"); tag.SetInnerText(listItem.Text); listItems.Add(tag); } return listItems; }
/// <summary> /// Generate options /// </summary> /// <param name="items"></param> /// <param name="selectedValue"></param> /// <param name="formatter"></param> /// <returns></returns> protected IEnumerable<NestedTagBuilder> GenerateOptions(IEnumerable items, string selectedValue, ISelectItemFormatter formatter) { if (formatter == null) return GenerateOptions(items, selectedValue); var listItems = new List<NestedTagBuilder>(); foreach (var item in items) { var tag = new NestedTagBuilder("option"); var listItem = formatter.Generate(item); tag.MergeAttribute("value", listItem.Value); if (listItem.Value == selectedValue || listItem.Selected) tag.MergeAttribute("selected", "selected"); tag.SetInnerText(listItem.Text); listItems.Add(tag); } return listItems; }
/// <summary> /// Initializes a new instance of the <see cref="SelectContext"/> class. /// </summary> /// <param name="context">Base context.</param> /// <param name="formatter"><see cref="Formatter"/></param> /// <param name="listItems"><seealso cref="ListItems"/></param> public SelectContext(GeneratorContext context, ISelectItemFormatter formatter, IEnumerable listItems) : base(context) { Formatter = formatter; ListItems = listItems; }