HomeDev GuideRecipesAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

Built-in property types

Describes how to use built-in property types in your models and also create your own property types.

Optimizely Content Management System (CMS) content is built up by models with properties that store and present data. You can use many built-in property types in your models and create your own.

You can use most property types as instance or list properties. Some types are list types themselves; those cannot be modeled as lists.

Common property types

What you want to createProperty solutionEditing experience
Plain short text – Control the allowed length with the StringLength attribute. Use a custom tag to control the containing tag, such as using an H1 for the main header for the page.StringOne row input
Plain long text – Control the allowed length with the StringLength attribute.String with UIHint.TextareaText area
HTMLXHtmlStringA TinyMCE HTML editor
Integer value – Controls other rendering, such as the number of items in a list. Control the min and max values with the Range attribute.Int A number slider
Date and time – Control the min and max values with the Range attribute.DateTimeA date and time picker
Double – Control the min and max values with the Range attribute.DoubleCheck editor
BooleanBooleanCheckbox
Page type – Filter items in a list, and so on.PageType 
BLOB – Hold binary data (such as an image). Route to a BLOB with pattern <Url to content>/BlobPropertyName. Blob 

Work with other content

To refer to existing content, use the Link or LinkCollection to create internal or external links.

  • Use ContentArea to display content from other content.
  • Use ContentReference, ContentReferenceList, or URL to link to a single content of a specified type.
  • Use the AllowedTypes attribute to further restrict the kind of links that can add to a property (although there are a few known limitations).

ContentReference<T> property type

ContentReference<T> is a built-in property type that allows you to reference a single content item of a specified type.

[AllowedTypes(typeof(MyPageType))]
public virtual ContentReference<MyPageType> FeaturedPage { get; set; }
📘

Note

PageReference is now obsolete. Always use ContentReference<T> for pages, media, or blocks.

Use a content reference with many UI hints to select different entities in CMS, such as a block, a media item, a block folder, or a media folder.

What you want to create

Property solution

Editing experience

  • Link to a media file of any type* – Link to any file in the media repository. Use ContentReference instead to use standard content rendering. (Mostly for backward compatibility.)

ContentReference with UIHint.MediaFile

Content picker with drag and drop support

  • Link to an image* – Lets an editor select content in the media repository by implementing IContentImage.

ContentReference with UIHint.Image

Content picker with drag and drop support

  • Link to a video* – Lets an editor select content in the media repository by implementing IContentVideo.

ContentReference with UIHint.Video

Content picker with drag and drop support

  • Link to a media file* with the possibility to append information in the URL – Each link can be an item inside Optimizely CMS, such as pages, media, and external URLs. Use URL instead of ContentReference to add information, such as query string parameters to control size.

Url with UIHint.MediaFile or UIHint.Image or UIHint.Video

Content picker with drag and drop support

Content area

ContentArea 

 

URL

Url 

Link dialog with drag-and-drop support

Link to multiple external and/or internal resources – Does not support AllowedTypesAttribute.

LinkItemCollection 

Link collection editor with drag-and-drop support

  • Link to external or internal resource* – Does not support AllowedTypesAttribute.

LinkItem 

  • Note:* Available in CMS 12.11.0 and later.

Link editor with drag-and-drop support

  • Link to multiple internal pages, media files, or other content types* – Supports AllowedTypesAttribute.

ContentReferenceList

Content picker with drag and drop support

Select predefined values

You can use the following solutions to create drop-down lists and check box lists:

What you want to createProperty solutionEditing experience
Select a single item from a relatively short list of optionsString/Int with SelectOne attributeLink to implementation page
Select several items from a relatively short list of optionsString/Int with SelectMany attributeLink to implementation page
Select a single item from a relatively long list of options. – Use with caution because the auto-suggestion editor creates requests to the server.String/Int with AutoSuggestion attributeLink to implementation page

Validation attributes

CMS supports the following validation attributes that are part of the .NET:

  • Range
  • StringLength
  • RegularExpression
  • EmailAttribute

You can create custom attributes that implement either ValidationAttribute. See Write custom attributes.