Thomas Krantz
Apr 20, 2011
  5674
(1 votes)

Custom property for selecting Visitor Groups

This custom property will render a checkbox list of all visitor groups, allowing multiple selections.

image 

Add a reference to EPiServer.ApplicationModules.

using EPiServer.Personalization.VisitorGroups;
 
namespace MySite.Website.Plugins.SpecializedProperties.VisitorGroups
{
    [PageDefinitionTypePlugIn(DisplayName = "Visitor Group selection")]
    public class PropertyVisitorGroups : PropertyMultipleValue
    {
        public override IPropertyControl CreatePropertyControl()
        {
            return new PropertyVisitorGroupsControl();
        }
    }
 
    public class PropertyVisitorGroupsControl : PropertySelectMultipleControlBase
    {
        protected override void SetupEditControls()
        {
            var repository = new VisitorGroupStore(DynamicDataStoreFactory.Instance);
            var list = repository.List()
                .OrderBy(v => v.Name)
                .Select(v => new ListItem(v.Name, v.Id.ToString())
                        {
                            Selected = ((PropertyMultipleValue) PropertyData).IsValueActive(v.Id.ToString())
                        })
                .ToArray();
 
            EditControl.Items.AddRange(list);
        }
    }
}
Apr 20, 2011

Comments

Please login to comment.
Latest blogs
Graph access with only JS and Fetch

Postman is a popular tool for testing APIs. However, when testing an API like Optimizely Graph that I will be consuming in the front-end I prefer t...

Daniel Halse | Feb 4, 2026

Best Practices for Implementing Optimizely SaaS CMS: A Collective Wisdom Guide

This guide compiles collective insights and recommendations from Optimizely experts for implementing Optimizely SaaS CMS, focusing on achieving...

David Knipe | Feb 4, 2026 |

A day in the life of an Optimizely OMVP: Learning Optimizely Just Got Easier: Introducing the Optimizely Learning Centre

On the back of my last post about the Opti Graph Learning Centre, I am now happy to announce a revamped interactive learning platform that makes...

Graham Carr | Jan 31, 2026

Scheduled job for deleting content types and all related content

In my previous blog post which was about getting an overview of your sites content https://world.optimizely.com/blogs/Per-Nergard/Dates/2026/1/sche...

Per Nergård (MVP) | Jan 30, 2026