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 create | Property solution | Editing 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. | String | One row input |
Plain long text – Control the allowed length with the StringLength attribute. | String with UIHint.Textarea | Text area |
| HTML | XHtmlString | A 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. | DateTime | A date and time picker |
Double – Control the min and max values with the Range attribute. | Double | Check editor |
| Boolean | Boolean | Checkbox |
| 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
ContentAreato display content from other content. - Use
ContentReference,ContentReferenceList, orURLto link to a single content of a specified type. - Use the
AllowedTypesattribute 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> property typeContentReference<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
PageReferenceis now obsolete. Always useContentReference<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 |
|---|---|---|
|
| Content picker with drag and drop support |
|
| Content picker with drag and drop support |
|
| Content picker with drag and drop support |
|
| Content picker with drag and drop support |
Content area |
|
|
URL |
| Link dialog with drag-and-drop support |
Link to multiple external and/or internal resources – Does not support |
| Link collection editor with drag-and-drop support |
|
| Link editor with drag-and-drop support |
|
| 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 create | Property solution | Editing experience |
|---|---|---|
| Select a single item from a relatively short list of options | String/Int with SelectOne attribute | Link to implementation page |
| Select several items from a relatively short list of options | String/Int with SelectMany attribute | Link 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 attribute | Link to implementation page |
Validation attributes
CMS supports the following validation attributes that are part of the .NET:
RangeStringLengthRegularExpressionEmailAttribute
You can create custom attributes that implement either ValidationAttribute. See Write custom attributes.
Updated 5 days ago
