Class AvailableContentTypesAttribute
Defines which content types that should be available under a ContentType
Inheritance
Inherited Members
Namespace: EPiServer.DataAnnotations
Assembly: EPiServer.dll
Version: 11.20.7Syntax
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class AvailableContentTypesAttribute : Attribute, _Attribute, IContentTypeAvailableModelSetting
Remarks
The diffent properties of the attribute are applied in the following way:
- Include implicitly exclude all PageTypes not in the list.
- Exclude implicitly include all PageTypes not in the list.
- IncludeOn and ExcludeOn combine with the settings on the target PageType. If there is a conflict Exclude/ExcludeOn have precedency over Include/IncludeOn.
Refer to "Attributes" and "Pages, Page Types and Page Templates" under "Content" in the Developer Guide for more information and examples.
Examples
Here is an example on how you can set available page types on your page types using this attribute.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using EPiServer.Core;
using EPiServer.DataAnnotations;
using System.ComponentModel.DataAnnotations;
using EPiServer.Security;
using EPiServer;
using EPiServer.Web;
using EPiServer.Shell.ObjectEditing.EditorDescriptors;
using EPiServer.Shell.ObjectEditing;
using EPiServer.DataAbstraction;
namespace CodeSamples
{
[ContentType(
DisplayName="My Page Type",
Description="Description for this page type",
Order=1024,
GUID="9CBBF910-CB5A-4C72-83AA-EDCF02E8A2BD",
GroupName="My Group",
AvailableInEditMode=true)]
[AvailableContentTypes(Include = new Type[] { typeof(MyPageType2), typeof(MyPageType3) })]
[Access(Users = "niis", Roles = "CmsEditors")]
public class TypedPageWithAttributeSample : PageData
{
[Required]
[Searchable]
[CultureSpecific]
[Editable(true)]
[Display(
Name = "My Heading",
Description = "Heading for my page type.",
GroupName = "My Tab",
Order = 64)]
public virtual string Heading { get; set; }
//An integer between 0 and 130.
[Range(0, 130)]
public virtual int Age { get; set; }
//Validating against a given regular expression.
[RegularExpression("[SomeRegularExpression]")]
public virtual string CustomValidation { get; set; }
//A string with a maximum length of 20 characters.
[StringLength(20)]
public virtual string Header { get; set; }
//Any URL
public virtual Url RedirectPage { get; set; }
//Reference to an image in the EPiServer media system.
[UIHint(UIHint.Image)]
public virtual ContentReference Logotype { get; set; }
//URL to image is also supported but mostly for upgrade support or when there is a need to add custom query parameters to the URL.
[UIHint(UIHint.Image)]
public virtual Url LogotypeAsUrl { get; set; }
//Creates a selection of predefined values.
[SelectOne(SelectionFactoryType=typeof(CustomLanguageSelectionFactory))]
public virtual string LanguageSelection { get; set; }
//Creates a selection of predefined values with the option to select several items.
[SelectMany(SelectionFactoryType=typeof(CustomLanguageSelectionFactory))]
public virtual string MultipleLanguageSelection { get; set; }
}
public class CustomLanguageSelectionFactory : ISelectionFactory
{
public IEnumerable<ISelectItem> GetSelections(ExtendedMetadata metadata)
{
var languages = new List<SelectItem>();
languages.Add(new SelectItem() { Text = "English", Value = "en"});
languages.Add(new SelectItem() { Text = "Swedish", Value = "sv" });
languages.Add(new SelectItem() { Text = "Norwegian", Value = "no" });
return languages;
}
}
[AvailableContentTypes(IncludeOn = new Type[] { typeof(TypedPageWithAttributeSample) })]
[ContentType]
public class MyPageType1 : PageData { }
[AvailableContentTypes(Exclude = new Type[] { typeof(TypedPageWithAttributeSample) })]
[ContentType]
public class MyPageType2 : PageData { }
[AvailableContentTypes(ExcludeOn = new Type[] { typeof(MyPageType1) })]
[ContentType]
public class MyPageType3 : PageData { }
[AvailableContentTypes(Availability = Availability.None)]
[ContentType]
public class MyPageType4 : PageData { }
}
Constructors
AvailableContentTypesAttribute()
Initializes a new instance of the AvailableContentTypesAttribute class.
Declaration
public AvailableContentTypesAttribute()
AvailableContentTypesAttribute(Availability)
Initializes a new instance of the AvailableContentTypesAttribute class.
Declaration
public AvailableContentTypesAttribute(Availability availability)
Parameters
Type | Name | Description |
---|---|---|
Availability | availability |
Properties
Availability
Gets or sets wether none ContentType should be available to create under the ContentType that has this attribute set.
Declaration
public Availability Availability { get; set; }
Property Value
Type | Description |
---|---|
Availability |
|
Exclude
Gets or sets the typed pages that are not available under an instance of a page of corresponding PageType.
Declaration
public Type[] Exclude { get; set; }
Property Value
Type | Description |
---|---|
System.Type[] | The available page types. |
ExcludeOn
Will exclude the typed page from the list of available ContentType for the specified typed pages.
Declaration
public Type[] ExcludeOn { get; set; }
Property Value
Type | Description |
---|---|
System.Type[] | The available page types. |
Include
Gets or sets the typed pages that are available under an instance of a page of corresponding ContentType.
Declaration
public Type[] Include { get; set; }
Property Value
Type | Description |
---|---|
System.Type[] | The available page types. |
IncludeOn
Will make the typed page available as child under the specified typed pages.
Declaration
public Type[] IncludeOn { get; set; }
Property Value
Type | Description |
---|---|
System.Type[] | The available page types. |
Explicit Interface Implementations
IContentTypeAvailableModelSetting.Exclude
Gets the typed pages that are not available under an instance of a page of corresponding PageType.
Declaration
IEnumerable<Type> IContentTypeAvailableModelSetting.Exclude { get; }
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<System.Type> | The available page types. |
IContentTypeAvailableModelSetting.ExcludeOn
Will exclude the typed page from the list of available PageType for the specified typed pages.
Declaration
IEnumerable<Type> IContentTypeAvailableModelSetting.ExcludeOn { get; }
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<System.Type> | The available page types. |
IContentTypeAvailableModelSetting.Include
Gets the typed pages that are available under an instance of a page of corresponding PageType.
Declaration
IEnumerable<Type> IContentTypeAvailableModelSetting.Include { get; }
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<System.Type> | The available page types. |
IContentTypeAvailableModelSetting.IncludeOn
Will make the typed page available as child under the specified typed pages.
Declaration
IEnumerable<Type> IContentTypeAvailableModelSetting.IncludeOn { get; }
Returns
Type | Description |
---|---|
System.Collections.Generic.IEnumerable<System.Type> | The available page types. |