Per Magne Skuseth
Mar 21, 2014
  5054
(5 votes)

Add some color to your UI

Here is a little trick to spice up the editorial view when using simple selection lists in EPiServer:
The SelectItem Text property in selection factories can contain html, which means that you can easily make the editorial controls look a bit more exciting.

public class BlockColorSelectionFactory : ISelectionFactory
{
    public IEnumerable<ISelectItem> GetSelections(ExtendedMetadata metadata)
    {
        yield return new SelectItem()
        {
            Text = "<span class='colorselector blue'></span>Blue",
            Value = "blue"
        };
        yield return new SelectItem()
        {
            Text = "<span class='colorselector white'></span>White",
            Value = "white" 
        };
        yield return new SelectItem()
        {
            Text = "<span class='colorselector gray'></span>Gray",
            Value = "dark"
        };
        yield return new SelectItem()
        {
            Text = "<span class='colorselector black'></span>Black",
            Value = "black"
        };
    }
}
In this case, the colorselector css classes are defined in a style sheet that is registered as a client resource.
 
[SelectOne(SelectionFactoryType = typeof(BlockColorSelectionFactory))]
public virtual string ColorTheme { get; set; }
 
 color
 
Here is another example, where I’ve used an image tag:
public class LanguageSelectionFactory : ISelectionFactory
{
    public IEnumerable<ISelectItem> GetSelections(ExtendedMetadata metadata)
    {
        var languageBranches = ServiceLocator.Current.GetInstance<ILanguageBranchRepository>().ListEnabled();
        return languageBranches.Select(branch => new SelectItem()
        {
            Text = string.Format("<img class='flag' src='/App_Themes/Default/Images/flags/{0}.gif'/>{1}", branch.LanguageID, branch.Name),
            Value = branch.LanguageID
        });
    }
}

flags

… And when using SelectMany:

 langz

Mar 21, 2014

Comments

Mari Jørgensen
Mari Jørgensen Mar 21, 2014 01:29 PM

Nice! I like it! :)

Jan 28, 2015 04:42 PM

I can't get this to work in the latest version.
It just displays the HTML markup instead of an image.

Any ideas?

Jul 31, 2015 04:07 PM

I've got the same issue as Kristoffer Av Ekenstam , did you ever find a resolution?

Per Magne Skuseth
Per Magne Skuseth Oct 8, 2015 04:21 PM

This will only work for CMS 7.x, I'm afraid.

Please login to comment.
Latest blogs
Understanding Optimizely Opal Cost vs Value

Every Opal conversation seems to start with the same question: "What does it cost?" Fair, but it's only half the question. Cost tells you what you'...

K Khan | Jun 15, 2026

Leverage — The CMS Edits One Item at a Time. The Work Doesn't.

Editorial work arrives in batches — a product rename across two hundred support articles, five hundred FAQs that should become blocks, an SEO refre...

Allan Thraen | Jun 15, 2026 |

“Learning by Doing – Optimizely OPAL Series” | Episode 02 is Live!

Introduction With Optimizely OPAL, we’re not just generating content—we’re designing intelligent workflows. But after working with teams and...

Ratish | Jun 14, 2026 |

Content Variations in CMS 13, Part 3: Audiences vs Audiences

Executive summary. Part 2 left the experiment running against Everyone . Real projects don't look like that. So this part wires those same CMS...

Piotr | Jun 14, 2026

Hiding Pages in the Optimizely CMS 13 Page Tree

When working with large Optimizely CMS solutions, the page tree can quickly become one of the biggest sources of editor frustration. This is...

Pär Wissmark | Jun 13, 2026 |

Four database surprises when upgrading from CMS 11 to CMS 13

We're in the middle of migrating a fairly large site from CMS 11 / .NET Framework to CMS 13 / .NET 10. The code migration is one thing, but the...

Per Nergård (MVP) | Jun 12, 2026