If you don't specify what type of EPiServer property a code property should map to using the Type property on the PageTypeProperty attribute Page Type Builder will try to figure it out for you. The default mappings are as follows:
| Code property type | Default Page Type Property Type |
| string | PropertyXhtmlString |
| int | PropertyNumber |
| int? | PropertyNumber |
| bool | PropertyBoolean |
| bool? | PropertyBoolean |
| DateTime | PropertyDate |
| DateTime? | PropertyDate |
| float | PropertyFloatNumber |
| float? | PropertyFloatNumber |
| PageReference | PropertyPageReference |
| PageType | PropertyPageType |
That is, if you create a couple of properties with code such as this:
[PageTypeProperty]
public virtual string MainBody { get; set; }
[PageTypeProperty]
public virtual PageReference LinkTo { get; set; }
[PageTypeProperty]
public virtual bool IncludeInRssFeed { get; set; }
It’s equivalent to writing the code this way:
[PageTypeProperty(Type= typeof(PropertyXhtmlString))]
public virtual string MainBody { get; set; }
[PageTypeProperty(Type = typeof(PropertyPageReference))]
public virtual PageReference LinkTo { get; set; }
[PageTypeProperty(Type = typeof(PropertyBoolean))]
public virtual bool IncludeInRssFeed { get; set; }
If you on the other hand where to create a property of a type that isn’t included in the default mapped types in the table above and you don’t specify the Type property of the attribute, such as this:
[PageTypeProperty]
public virtual Uri LinkUri { get; set; }
You’ll get an error message like the one below at runtime.
