In this tutorial, you will learn how Episerver uses generics to deal with all types of content. With the ever-growing needs of content editors to be able to manipulate different things within the editor, from Episerver 7 the notion of supporting multiple content types was introduced. If you want to learn how this was achieved, read on 🔥🔥🔥
The notion of blocks is a great example of non page content. Using components inside of pages is handy. Having a single API allows you to access any content is very handy. In order to implement this functionality, Episerver made a fundamental change by introducing the IContent
interface. The IContent
interface is the basic building block that will allow a page, block, blog comment or whatever type you want to create, work with Episerver. In Episerver this interface is called IContent.
The IContent Explained
IContent
can be found in the Episerver.Core
namespace and it defines six members that must be implemented in order for the content type to work in Episerver.
Name: In order for a bit of content to exist in Episerver it must have a name. The name
property is a string
and will be the thing Episerver displays in edit mode.
ContentLink: This is the Episerver way of uniquely identifying the content. Episerver uses an object called ContentReference
. More information about this unique code can be found in, Why Does Episerver Need A Content Reference?
ParentLink: This references the content item's parent item in the page tree. In Episerver, the StartPage
is a special content type that defines the websites home page. It's the page your website visitors will see when they first reach your website. The navigation tree build up from pages created under the StartPage
. In order for a piece of content to exist, Episerver needs to know where it will live in relation to the StartPage
or the RootPage
.
IsDeleted: The IsDelete
member tells Episerver if the page has been 'soft' deleted. Soft deleted means that the page may still exist in the database, however, a content editor may have moved it into the trash bin. If items are moved into the Trash then they will not be displayed on the website.
ContentTypeID: The Content Type Id describes the content type within Episerver. All content will be built from a type. A start page template may have an ID of 1, a landing page template might have an ID of 2 and a blog post template might have an ID of 3. The content type can be used to determine the template type it uses.
ContentGuid: The idea of needing a content Guid
can be confusing when we already have a content link that uniquely identifies the content. The ContentLink
tells Episerver how to identify the content. The ContentGuid
is the thing that uniquely identifies the item within the current Episerver system. One reason why this property is required is to support tasks like content migration. If you are trying to do an EpiSever content migration (import/export) from an old website into a new database, you may very well have another bit of content with the clashing name. I have never needed to use this feature, however, the ContentGuid
ensures these items can be differentiated.
You are now a content reference guru. Use your new knowledge wisely. Happy coding 🤘